我正在尝试使用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?
答案 0 :(得分:4)
如果您的表达式不是动态的,只需使用文字:
var regExp = /(?<!\\)(?:\\{2})*\\(?!\\)([5-9]|[1-9]\d)/gi;
问题是,字符串中的转义序列\\
最终会在regEx中呈现\
个字符,这反过来会导致它们不应该转义括号,导致未终止的组。