没有lookbehind的Javascript正则表达式

时间:2016-01-26 21:18:13

标签: javascript regex

我正在使用javascript并尝试匹配数学函数,例如f(2)或g(1200),但不匹配sqrt(2)

之类的东西

现在我有

/[a-z]\([\d]+\)/

并在regexr上突出显示这些

  • G(2)
  • F(2)
  • F(X)
  • f(2) g(3)
  • SQR的 T(2)

一切都很完美,除非我不想要选择sqrt的那一部分。我想看看背后的字母,但javascript不支持,任何关于如何解决这个问题的想法?谢谢:))

1 个答案:

答案 0 :(得分:3)

只需使用单词边界:

\b[a-z]\(\d+\)

请参阅regex demo

由于JS正则表达式引擎不支持lookbehind,因此逻辑解决方法是在此处使用单词边界断言:如果与[a-z]匹配的字母前面没有单词字符(来自{{1可以匹配它 - 这就是[a-zA-Z0-9_]非常方便的时候。

Alsom,您不必将唯一的速记字符类模式放入字符类中,\b将匹配与[\d]相同的字符。