为什么JavaScript中的正则表达式/(?i)-StringA$|-StringB$/无效?
问题解决:正则忽略大小写匹配后缀报错的修复
错误原因
你写的(?i)是ES2018才引入的局部正则修饰符,但当前Angular项目的编译环境(通过babel/webpack loader处理)未兼容这个特性,所以会把(?i)识别成无效的正则分组,触发"Invalid group"错误。
修复方案
你的需求是忽略大小写匹配指定后缀并移除,直接给整个正则加上全局忽略大小写的/i修饰符即可,还可以把两个后缀合并成更简洁的分组写法:
const reg = /-(TeamMember|TeamLead)$/i; testString = testString.replace(reg, "");
说明
/i修饰符放在正则末尾,会让整个正则匹配时忽略大小写,完全覆盖你原本用(?i)的需求- 用
(TeamMember|TeamLead)分组合并两个后缀,逻辑和原正则一致,但结构更清晰 - 这个写法兼容所有支持ES5及以上的环境,完全适配Angular的编译流程
内容的提问来源于stack exchange,提问作者dontchaworryboutit
相关产品推荐
相关产品推荐

