为什么这个RegEx-Pattern不起作用?

时间:2017-08-29 15:22:08

标签: javascript regex

我尝试为此字符串创建一个模式:(abcde ...,它看起来像这样:

\b(?=[(])[a-zA-Z_0-9]+\b

我希望选择abcde

为什么这不起作用?

3 个答案:

答案 0 :(得分:2)

您似乎正在寻找后面的?<=)Javascript Regex不支持,尝试捕获您需要的模式并使用match提取它:< / p>

console.log(
  "(abcde...".match(/\((\w+)\b/)[1]
)

答案 1 :(得分:0)

有两个原因。

  • 前瞻不会消耗字符
  • border&#39; \ b&#39;匹配&#39;(&#39;

来源(abcde ... 现在检查以下正则表达式:

\b(?=[(])([a-zA-Z_0-9]+)\b      # doesn't match

\b(?=[(]).([a-zA-Z_0-9]+)\b     # doesn't match

最后:

(?=[(]).([a-zA-Z_0-9]+)\b        # matches

所以,从逻辑上讲,在第一个正则表达式中,\ b匹配&#39;(&#39;。之后,前瞻失败。

答案 2 :(得分:0)

大括号(已作为单词边界,在模式开头删除\b

\([a-zA-Z_0-9]+\b

https://regex101.com/r/MZhqSL/2