请教正则的前瞻匹配

发布于 2022-09-06 01:37:47 字数 130 浏览 13 评论 0

var re = /w(?!9)/ 或 /^w(?!9)/
var str = "wm"
这样match的结果是 w

但如果 re = /w(?!9)$/
结果是null
为啥呢 请教各位前辈

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浮光之海 2022-09-13 01:37:47

因为前瞻部分其实不属于匹配部分,类似于一个附加的判断条件,这里re = /w(?!9)$/其实是必须以w结尾。

岁吢 2022-09-13 01:37:47

/w(?!9)$/ 你这样写就是一个w 而且这个w还得是结尾

无言温柔 2022-09-13 01:37:47

前瞻匹配理解为匹配位置。(?!9)是指匹配不是9前面的位置。看后面的例子可能更好理解些。
推荐在线正则图形化工具一看便知。
在线正则匹配工具
如果是/w9(?!9)$/
w9则匹配。
w(?!9)$也匹配。

(?=p) 和 (?!p)

(?=p),其中 p 是一个子模式,即 p 前面的位置,或者说,该位置后面的字符要匹配 p。
比如 (?=l),表示 "l" 字符前面的位置,例如:

var result = "hello".replace(/(?=l)/g, '#');
console.log(result);
// => "he#l#lo"

而 (?!p) 就是 (?=p) 的反面意思,比如:

var result = "hello".replace(/(?!l)/g, '#');
console.log(result);
// => "#h#ell#o#"

(?=p) 就与 ^ 一样好理解,就是 p 前面的那个位置。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文