我的字符串包含所有数字。
我想检查是否:
0-4
和5
所以,我使用了这个正则表达式:
(?=^\d{5,}$)(^[0-4]*$) //works
正如所料,这可以完成工作
但是当使用正面看后面的上述正则表达式不起作用
(?<=^\d{5,}$)(^[0-4]*$) //doesn't work
为什么positive look behind
不起作用,look ahead
在这种情况下起作用
修改
是的,我可以使用
^[0-4]{5,}$
但问题是为什么look-behind
在上述情况下无效
这是参考THIS问题,其中lookahead
工作但不lookbehind
答案 0 :(得分:1)
问题是你没有把结果固定在输入的末尾 试试这个:
(?<=^\d{5,})(^[^5-9]*)$ // $ at end (and removed now-redundant $ from each look behind)
此外,负面消极因素更难阅读。只需使用[0-4]
代替[^5-9]
。
最后,为什么不使用它:
^[0-4]{5,}$
答案 1 :(得分:1)
你不应该从后面看,以匹配“看背后断言”吗?
即
(^[0-4]*$)(?<=^\d{5,}$)
现在看来,你想要这个:
[0-4]
基本上减少到
false