请教正则的前瞻匹配
var re = /w(?!9)/ 或 /^w(?!9)/
var str = "wm"
这样match的结果是 w
但如果 re = /w(?!9)$/
结果是null
为啥呢 请教各位前辈
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
var re = /w(?!9)/ 或 /^w(?!9)/
var str = "wm"
这样match的结果是 w
但如果 re = /w(?!9)$/
结果是null
为啥呢 请教各位前辈
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
因为前瞻部分其实不属于匹配部分,类似于一个附加的判断条件,这里
re = /w(?!9)$/
其实是必须以w结尾。/w(?!9)$/ 你这样写就是一个w 而且这个w还得是结尾
前瞻匹配理解为匹配位置。(?!9)是指匹配不是9前面的位置。看后面的例子可能更好理解些。
推荐在线正则图形化工具一看便知。
在线正则匹配工具
如果是
/w9(?!9)$/
w9
则匹配。w(?!9)$
,w
也匹配。(?=p) 和 (?!p)
(?=p),其中 p 是一个子模式,即 p 前面的位置,或者说,该位置后面的字符要匹配 p。
比如 (?=l),表示 "l" 字符前面的位置,例如:
而 (?!p) 就是 (?=p) 的反面意思,比如:
(?=p)
就与^
一样好理解,就是p
前面的那个位置。