未捕获的SyntaxError:无效的正则表达式:无需重复

时间:2015-07-13 08:43:53

标签: javascript regex

这是我的正则表达式:

var newRegexp= new RegExp('\[\/\[\]\^\$\|\*\+\(\)\\~@#%&\-_+=\{}£<>]{1,}', 'g');

我收到Uncaught SyntaxError: Invalid regular expression: Nothing to repeat错误,我无法弄清楚原因。我在RegExr上使用它,它运行正常。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

你有一个应该启动范围的第一个[转义。 Unescape它。

还要注意最好使用文字符号(我还建议删除不必要的转义,因为它使正则表达式太难以理解):

var newRegexp = /[\/\[\]^$|*+()\\~@#%&_+={}£<>-]+/g;

请参阅demo

另请注意,我将{1,}替换为+,因为它更短,意味着绝对相同。如果我们将连字符放在字符类的末尾,我们就不必逃避它。

答案 1 :(得分:1)

你需要双倍地逃避\之类的内容,[]内部也不需要逃避大多数正则表达式的特殊字符

new RegExp('[/\\[\\]^$|*+()~@#%&\\-_+={}£<>]{1,}', 'g');