JS正则表达式,基本先行

亚历山大·米尔斯

对于我的一生,我无法弄清楚为什么这个正则表达式

^\.(?=a)$

不匹配

".a"

有人知道为什么吗?

我将关闭此处提供的信息:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

伊恩·麦克劳德(Ian McLaird)

它不起作用的原因是,先行实际上并没有消耗任何字符,因此匹配位置不会前进。

^\.(?=a)$

匹配行的开头(^-此匹配),然后匹配文字.\.-也匹配),然后(不消耗任何字符),检查下一个字符是否为文字a(?=a))。是的,因此前瞻匹配。然后断言您的位置在字符串($的末尾这是没有的情况下,因为我们正确后还在.,所以比赛会失败。

另一个可能的匹配表达式是

^\.(?=a$)

它的工作原理与上面相同,但是关于行尾的断言包含在前行中,因此这次匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章