正则:一个表达式跟预期的结果不一样
想用正则来判断一个字符串等式成立。
用来测试的式子是
/^(x+)(x+)+ % \2 = \1$/.test("xxxx % xx = x")
期望结果是false,但在三大浏览器上运行都是true。
一步步排除,发现如下奇怪结果
/^(x{1}){1}(x+){2} % \2 = \1$/.test("xxxx % xx = x")
true
/^(x{1}){1}(x{2}){2} % \2 = \1$/.test("xxxx % xx = x")
false
明明\2是xx,xx的n倍不可能是xxx。可是写成x+就可以
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第一个
(x+)
和第二个(x+)
配置的长度可能不一样,比如下面这句话的结果你能想到么?可以看出来,两个
(x+)
都采用了贪婪匹配,第 1 个(x+)
直接匹配了 3 个x
(因为得留一个给第 2 个(x+)
匹配,不然就匹配不成功了)。如果你想两个
(x+)
匹配一样的东西,那你的正则表达式应该改一下