这是我的正则表达式:
var newRegexp= new RegExp('\[\/\[\]\^\$\|\*\+\(\)\\~@#%&\-_+=\{}£<>]{1,}', 'g');
我收到Uncaught SyntaxError: Invalid regular expression: Nothing to repeat
错误,我无法弄清楚原因。我在RegExr上使用它,它运行正常。任何帮助表示赞赏。
答案 0 :(得分:3)
你有一个应该启动范围的第一个[
转义。 Unescape它。
还要注意最好使用文字符号(我还建议删除不必要的转义,因为它使正则表达式太难以理解):
var newRegexp = /[\/\[\]^$|*+()\\~@#%&_+={}£<>-]+/g;
请参阅demo
另请注意,我将{1,}
替换为+
,因为它更短,意味着绝对相同。如果我们将连字符放在字符类的末尾,我们就不必逃避它。
答案 1 :(得分:1)
你需要双倍地逃避\
之类的内容,[]
内部也不需要逃避大多数正则表达式的特殊字符
new RegExp('[/\\[\\]^$|*+()~@#%&\\-_+={}£<>]{1,}', 'g');