javascript - 如何使这个正则表达式与 JavaScript 兼容?

标签 javascript regex

我在 Expresso 中找到了一个正则表达式模板,这个模板工作正常并返回完美匹配,但在 JavaScript 中它不起作用。我知道它可能用于后视,但我在正则表达式中的效率不够高,无法使其与 JS 兼容。

\((?>[^()]+|\((?<number>)|\)(?<-number>))*(?(number)(?!))\)

我想将它与...匹配

max(50, max(51, 60)) a() MAX(s,4,455)something

...它应该返回...

1: (50, max(51, 60))

2: ()

3: (s,4,455)

这在 Expresso 中完美运行,但 Chrome 中的 JS 控制台说:

Uncaught SyntaxError: Invalid regular expression: /\((?>[^()]+|\((?<number>)|\)(?<-number>))*(?(number)(?!))\)/: Invalid group

如何修改此正则表达式以在 JavaScript 中正常运行?

最佳答案

JavaScript 不支持 named capture groups (?<number>)

this question 中的建议, regex 可能不是完成这项工作的正确工具。但是,如果您只想匹配最外面的括号组,您可以使用这个

/\([^)]*(\s?\))*\)/g

http://refiddle.com/114 查看它的工作情况

关于javascript - 如何使这个正则表达式与 JavaScript 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886386/

相关文章:

javascript - 使用 jquery 只允许输入 2 个小数点到文本框?

javascript - jQuery.when : What happens if one function fails? 时

javascript - JavaScript 样式类返回空字符串

javascript - 使用 QUnit、PhantomJS 和 JSCover 时如何组织我的 JavaScript 单元测试

Javascript 正则表达式帮助

Python - 如何删除汉字之间的空格,同时保留字符和数字之间的空格?

javascript - 如何使用正则表达式基于泛型类型从字符串中删除完整行

java - 尝试从字符串中提取某些数字

javascript - 正则表达式用回车替换句子的每个结尾

javascript - 点击星号后在表单中设置星号值