关于正负向前瞻,感觉教程和定义不一样

来源:2-9 前瞻

阿古斯LM

2018-02-16 12:27

正向前瞻exp(?=assert)是在正则表达式匹配到规则的时候向前检查是否符合断言。是的话执行正向前瞻

负向前瞻exp(?!assert)是在正则表达式匹配到规则的时候向前检查是否不符合断言。是的话执行负向前瞻

都是从后往前匹配

\w匹配的是 [a-zA-Z_0-9]

'a2*34v8'.replace(/\w(?=\d)/g,‘X’)

为什么结果是‘X2*X4X8’?不是应该从后往前匹配么?a符合\w,但是前面没有数字不符合(?=\d)。

还有'a2*34v8'.replace(/\w(?!\d)/g,‘X’) ,结果是‘aX*3XXX’

这两个都和正向前瞻和负向前瞻定义相反,为什么??


写回答 关注

1回答

  • qq_宋大米_03817667
    2018-02-17 09:01:31

    “正则表达式是从文本头部向尾部解析”。这就像在走路,没走过的路在你的前面,需要你往前看(前瞻);走过的路需要你回头看(后顾)

JavaScript正则表达式

JavaScript正则表达式教程,理解之后,正则表达式比你想象的简单

96812 学习 · 119 问题

查看课程

相似问题