js中replace加正则在某些场景在可以简化字符串截取操作,事半功倍。
# 背景
在对服务端返回到报错话术ResponseMsg:‘ERROR0391,您的登陆信息已失效’这段话术进行过滤,需要删除掉报错码,前端反显‘您的登陆信息已失效’。
我的做法是用indexOf方法查询ResponseMsg是否包含ResponseCode‘ERROR0391’,如果存在再用字符串截取方法slice截取掉前10位,只留话术,审核代码的时候却被告知这样比较麻烦。
# 优化方案
已知报错码值固定9位,前五位固定大写ERROR,后四位数字,那么使用ResponseMsg.replace(/^[A-Z]{5}[0-9]{4},/, '')
即可,^表示开头,[A-Z]{5}表示5位A-Z的大写字母,[0-9]{4},表示0-9的4位数字以及后面的逗号,如果匹配到了则换成空串。
'ERROR0391,您的登陆信息已失效'.replace(/^[A-Z]{5}[0-9]{4},/, '') // 输入代码
'您的登陆信息已失效' // 打印信息
1
2
2
# 总结
很多检索再截取的数据方法场景,如果数据存在规律,可以直接使用replace方法,第一个参数传入正则表达式,第二个参数为被替换的内容从而一步到位。