【问题标题】:Javascript Regex: create new a lookbehind regular expression with variable?Javascript Regex:使用变量创建新的后向正则表达式?
【发布时间】:2013-08-26 06:56:06
【问题描述】:

我想通过 JavaScript 创建一个带有变量的新 RegExp。但是当我想创建一个新的lookaround RegExp时遇到了麻烦:

var xvar = "_on";
var regex = new RegExp("(?<!" + xvar + ")(.gif|.jpg|.png)$");
#=> SyntaxError: Invalid regular expression: /(?<!_on)(.gif|.jpg|.png)$/: Invalid group

我尝试转义Creating regexp with special characters之后的所有特殊字符,然后它可以创建一个新的正则表达式,但就像一个字符串,而不是环视正则表达式。

/\(\?<!_on\)\(\.gif\|\.jpg\|\.png\)\$/

谁能帮帮我?

【问题讨论】:

  • Javascript 不支持lookbehind。
  • 一种方法是反转字符串...取决于您在做什么。
  • 终极目标是什么?为什么不能像"(?:" + xvar + ")(.gif|.jpg|.png)$" 那样使用普通的非捕获组?

标签: javascript regex regex-lookarounds


【解决方案1】:

我不知道您的目标 RegExp 但量词 (...) 在这种情况下会导致错误。例如,使用非捕获括号(?:...)

var regex = new RegExp("(?:<!" + xvar + ")(?:.gif|.jpg|.png)$");

参考:Regular Expressions - JavaScript | MDN

@Alan Moore:你是对的。

【讨论】:

  • 他不是在尝试匹配&lt;!,而是在尝试使用否定的lookbehind,这在JavaScript 正则表达式中不受支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 2020-01-02
  • 1970-01-01
相关资源
最近更新 更多