[英]Positive lookahead with javascript regex
我一直搞乱了正则表达式..我觉得我很难......我看过一个代码:
function myFunction() {
var str = "Is this all there is";
var patt1 = /is(?= all)/;
var result = str.match(patt1);
document.getElementById("demo").innerHTML = result;
}
当我运行这段代码它给我的输出is
。
但是当我添加喜欢/is(?=there)/
它没有输出任何东西。 我是正规表达的新手..希望你们可以帮助理解正则表达式中的积极前瞻。我已经按照许多教程它没有帮助我。
希望你们能帮助我。 谢谢!
正则表达式is(?= all)
的字母相匹配is
,但前提是他们后面紧跟字母all
同样,正则表达式is(?=there)
的字母相匹配is
,但前提是他们后面紧跟的字母there
如果您在合并两个is(?= all)(?=there)
,你想匹配的字母is
,但只有当他们紧跟都是由字母all
和字母there
在同一时间... 这是不可能的。
如果你想匹配的字母is
,但只有当他们被紧跟 无论是字母all
或字母there
,那么你可以使用:
is(?= all|there)
如果,另一方面,你想匹配的字母is
,但只有当他们后面紧跟的字母all there
,那么你可以使用:
is(?= all there)
如果我想要的is
跟随all
和there
,但在字符串中的任何地方?
然后你可以使用类似的东西is(?=.* all)(?=.*there)
理解前瞻的关键
结果的关键是要理解前瞻是一个断言,它检查某些东西是否跟随,或者先于字符串中的特定位置 。 这就是我立刻加粗的原因。 以下文章应该消除任何混淆。
参考
该正向前查找失败的事实, there
没有立即跟进是 。
is(?=there) # matches is when immediately followed by there
要匹配的是,如果字符串中there
某个地方,你会这样做:
is(?=.*there)
说明 :
is # 'is'
(?= # look ahead to see if there is:
.* # any character except \n (0 or more times)
there # 'there'
) # end of look-ahead
见演示
我建议的详细教程: 如何在正则表达式中使用Lookaheads和Lookbehinds
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.