繁体   English   中英

javascript正则表达式的正向前瞻

[英]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跟随allthere ,但在字符串中的任何地方?

然后你可以使用类似的东西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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM