概述
/x(?=y)/ MDN解释如下
匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言。
例如,/Jack(?=Sprat)/会匹配到'Jack'仅当它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack’仅当它后面跟着'Sprat'或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配结果的一部分。
先行断言详解
x(?=y) 先行断言就是,断言我需要匹配的内容x后面一定跟着y。所以只会匹配到xy中的x
此处误区为,有人认为会匹配到y,这是错的。先行断言只会匹配x
代码如下:
let str = "a123"
str.match(/a(?=123)/)
// 会匹配到a => a
str.match(/a(?=1234)/)
// 不会匹配到a =>null
由上面的解释可知。?= 仅会匹配到 后面跟着123的a ;
所以进一步 编写:
let str1 = "a123ASas"
str1.match(/a(?=123)d/)
// 会匹配到a1 => a1
解释: 匹配到了后面跟着123的a 然后匹配到了d 1 所以输出为a1
最后
以上就是风中月光为你收集整理的详解正则中先行断言的用法的全部内容,希望文章能够帮你解决详解正则中先行断言的用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复