我正在尝试使用Javascript创建以下正则表达式。
(?<!\\)(?:\\{2})*\\(?!\\)([5-9]|[1-9]\d)
但是,这样做会在控制台中显示无效的组错误。
regExp = new RegExp("(?<!\\)(?:\\{2})*\\(?!\\)([5-9]|[1-9]\d)", "gi");
我不明白问题到底是从哪里来的。我很感谢你的帮助。
谢谢
编辑:经过一些研究,我发现Javascript不支持lookbehinds。
所以错误来自于(?<!\\)
。请参考这个新提出的问题,找到另一种方法来完成相同的工作。How to check for odd numbers of backslashes in a regex using Javascript?
发布于 2018-05-14 22:35:26
如果您的表达式不是动态的,只需使用文字:
var regExp = /(?<!\\)(?:\\{2})*\\(?!\\)([5-9]|[1-9]\d)/gi;
问题是,字符串中的转义序列\\
最终会呈现regEx中的\
字符,这反过来又会转义它们不应该转义的括号,从而导致未终止的组。
https://stackoverflow.com/questions/50332826
复制相似问题