Javascript 未捕获的语法错误:无效的正则表达式:无需重复

Javascript 未捕获的语法错误:无效的正则表达式:无需重复,javascript,regex,Javascript,Regex,这是我的正则表达式: var newRegexp= new RegExp('\[\/\[\]\^\$\|\*\+\(\)\\~@#%&\-_+=\{}£<>]{1,}', 'g'); var newRegexp=newRegexp('\[\/\[\]\^\$\*\+\(\)\\\~@\\\\\\\\%&\-\+=\{}]{1,},,,,'g'); 我得到了未捕获的SyntaxError:Invalid正则表达式:无需重复错误,我不知道为什么。我戴上它,效果很好。非常感谢您

这是我的正则表达式:

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

我得到了
未捕获的SyntaxError:Invalid正则表达式:无需重复
错误,我不知道为什么。我戴上它,效果很好。非常感谢您的帮助。

您有一个先转义的
[
,它应该开始一个范围。请取消转义

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

var newRegexp=/[\/\[\]^$|*+(\\~@\\\\\%&+={}-]+/g;


还请注意,我将
{1,}
替换为
+
,因为它较短且含义完全相同。如果我们将连字符放在字符类的末尾,则不必对其进行转义。

您有一个转义的第一个
[
,它应该开始一个范围。取消转义

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

var newRegexp=/[\/\[\]^$|*+(\\~@\\\\\%&+={}-]+/g;


还请注意,我将
{1,}
替换为
+
,因为它较短,意思完全相同。如果我们将连字符放在字符类的末尾,就不必对其进行转义。

您需要对
\
进行双重转义,同样在
[]
内部,也不需要转义大多数正则表达式特殊字符

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

您需要对
\
进行双重转义,同样在
[]
中,没有必要转义大多数正则表达式特殊字符

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

您要找的正则表达式是什么?我需要检查html中输入字段上的特殊字符。onkeydown可能更容易维护。@Cerburs但这对非拉丁语言有效吗?很好。我不知道您要找的正则表达式是什么。我需要检查html.onkeydo中输入字段上的特殊字符wn可能更容易维护。@Cerburs这对非拉丁语言有效吗?好的观点。我不知道。宠物皮:在
=
符号之前没有空格;-)不过,很好的回答,解决的不仅仅是眼前的问题。+1我添加了空格以获得更好的美感:)宠物皮:在
=
符号之前没有空格;-)不过,很好的回答,解决的不仅仅是眼前的问题。+1我为更好的美感增加了空间:)