昨天升级webpack,升级后编译一直存在问题,最终定位原因为正则表达式写错导致。但是原因有点蹊跷。正则表示式如下var reg=/abc|/reg.test('ddd')结果:true网上搜了下,没搜到解释。 在idea里试了下,| 也是匹配所有. 求知道原因的同学不吝赐教,最好给出文档!!!
3 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
看了各位答主的回答,我整理了一种解释如下:
每一个正则表达式的限定即包含了位置限定也包含了字符限定。只有既满足位置约束也满足字符约束的字符串才会评估为true.
比如,
^cat 位置限定为行开头,字符限定为cat
cat 位置限定为任意位置, 字符限定为cat
所以/abc|/的解释就是匹配任意位置开始的abc串或者匹配任意位置.
因为任何字符串即使是空串也是有位置信息(开头,结尾都算位置信息)的,所以自然任何字符串都可以匹配上了。
不知道这个解释,大家觉得如何?
阿晨1998
TA贡献2037条经验 获得超6个赞
从测试的结果来看,如果|前面没有匹配上的话,以|结尾仅仅是匹配字符间的位置,仅仅是匹配一个位置,有 n 个字符,就有 n+1 个位置可以匹配,所以空字符串,也可以匹配到一个位置,所以永远为真:
最后在 reg101 上是这么解释的:
添加回答
举报
0/150
提交
取消