XRegExp:“ Unmatched')'”然而,一切似乎都是平衡的

时间:2018-11-06 11:47:21

标签: javascript regex pcre xregexp

我编写了以下代码行:

XRegExp.exec(data,
    XRegExp('<!-- @\[(?<component>[\w+])[\(*(?<classes>[\w+])*\)]*\] -->', 'g'))

如您所见,它正在使用XRegExp库,因此我可以使用命名组和其他PCRE功能。

我遇到了错误:

syntaxError: Invalid regular expression: /<!-- @[(?<component>[w+])[(*(?<classes>[w+])*)]*] -->/: Unmatched ')'

但是,我不知道不匹配的)在哪里。据我所知,所有需要转义的方括号都应该是,而所有不应该转义的方括号都不能。

这是我要匹配的字符串:

<!-- @[NoteBlock(warning)] -->

这些还应该匹配:

<!-- @[NoteBlock(warning, high-level)] -->

<!-- @[NoteBlock] -->

这不应该匹配:

<!-- @[(warning, high-level)] -->

UDPATE:使用Regex101设法使正则表达式通过:我已将正则表达式更新为'<!-- @\[(?<component>[\w+]+)\(*(?<classes>[\w+]+)*\)*\] -->',但是仍然遇到相同的错误。

1 个答案:

答案 0 :(得分:1)

我已经更新了答案,以满足提供的新信息。

以您尝试捕获原始正则表达式的示例为例。

以下内容将匹配[[到component之间的任何字符,以及()到class之间的任何字符。

\ w匹配单词,数字或下划线。 这会使它丢失您的[-,]字符

希望这会有所帮助。

<!-- @\[(?<component>[\w]*)\((?<classes>.*?)\)*\] -->

@ [Component(类-警告,高级别)]