PC端谷歌、Edge浏览器正常运行,移动端安卓设备能够正常运行的正则。 在IPhone系设备,IOS系统中的Safari浏览器、QQ浏览器都出现报错。报错信息在JS中使用try..catch语句获取到:SyntaxError:Invalid regular expression:invalid group specifier name。
由于项目简单,在随机生成姓名,电话等虚拟信心的方法中,用了正则零宽先行和后行断言。(因为很少用正则,也知道正则开销大,但因为小项目,就想着练个手)
其实只要这样写就好了。
然后写了个很长的断言,没错就是打个星星的事,甚至在vue 统一的filter管理里面也有对应打星星方法啊。
而且新方法没有开始没有些try catch (这么简单的东西,应该不会错)
说了这么多就顺便给大家说下 断言吧,其实这东西真的很好用。
名词解释
(?!)零宽负向先行断言
(?=)零宽先行断言 (我用了)
(?<=)零宽后行断言 (我用了)
(?<!)零宽负向后行断言。
通俗解释
?!后面不是什么,且找到这个位置
?=后面是什么,且找到这个位置
?<=前面是什么,且找到这个位置
?<!前面不是什么,且找到这个位置
案例 :拿到字符串中的数字,当然后 \d也能用啊,正则没有最好写法,只有最合适的。
小提示:断言要写括号包住,但是他不是在原子组里的。
{//使用断言匹配写法
let str = "SCscHero123SCscHero";
let reg = /(?<=SCscHero)\d+(?=SCscHero)/g;
console.log(str.match(reg)[0]);
{//使用分组替换写法
let str = "SCscHero123SCscHero";
let reg = /SCscHero(\d+)SCscHero/;
console.log(str.match(reg)[1]);
}
就是个小例子,其他断言也是类似的。