无效的Regex组

时间:2018-05-14 14:29:38

标签: javascript regex

我正在尝试使用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?

1 个答案:

答案 0 :(得分:4)

如果您的表达式不是动态的,只需使用文字:

var regExp = /(?<!\\)(?:\\{2})*\\(?!\\)([5-9]|[1-9]\d)/gi;

问题是,字符串中的转义序列\\最终会在regEx中呈现\个字符,这反过来会导致它们不应该转义括号,导致未终止的组。