Javascript 如何在密码正则表达式中使用()[]大括号作为特殊字符?

Javascript 如何在密码正则表达式中使用()[]大括号作为特殊字符?,javascript,regex,Javascript,Regex,我在项目中使用以下正则表达式作为密码字段: /^(?=.*\d)(?=.*[~!@#$%^&*)(_+-:[}="`])(?=.*[a-z])(?=.*[A-Z]).{8,}$/ 我的要求是至少允许 1大写字母 1小写字母 1个号码 1特殊字符 它应该允许“~!@$%^&*)(+-:[}=“特殊字符。如果输入其他字符,则不允许输入这些字符 但它允许使用其他字符,如\等 我对正则表达式没有太多的知识。我错在哪里了?无论你不想允许什么,只要把它们放在方括号([])中,并用帽号(^

我在项目中使用以下正则表达式作为密码字段:

/^(?=.*\d)(?=.*[~!@#$%^&*)(_+-:[}="`])(?=.*[a-z])(?=.*[A-Z]).{8,}$/
我的要求是至少允许
1大写字母
1小写字母
1个号码
1特殊字符

它应该允许“~!@$%^&*)(+-:[}=“特殊字符。如果输入其他字符,则不允许输入这些字符

但它允许使用其他字符,如
\


我对正则表达式没有太多的知识。我错在哪里了?

无论你不想允许什么,只要把它们放在方括号([])中,并用帽号(^)表示即可

例如:

[^|][^/]
这将不允许使用这些字符

试试这个:

Gt%:_=yh^|\5%3f

您需要转义特定于正则表达式的字符($,&,^,*,+,?,/,|,),(,],[,},{):


我通常只是避开所有标点是安全的,但是没有必要逃避,{,,,/p>< p>问题是在你的字符类中,在代码“>> +/CODE >,即<代码> 0x2b和<代码>:<代码> > <代码> 0x3a < /代码>中,在代码“> > /代码> >中放置一个非逃逸<代码> -/COD>。因此,允许使用此范围内的racter

您可以将
-
移动到字符类的末尾或开始处,如下所示:

/^(?=.*\d)(?=.*[~!@#$%^&*)(_+:[}="`-])(?=.*[a-z])(?=.*[A-Z])[~!@#$%^&*)(+:[}="`\w-]{8,}$/
另一个重要的是将末尾的点(任何字符)更改为允许的字符集,如上所示。

很好的例子,正则表达式包含特定于正则表达式的字符的信息。在集合中,只有
]
-
^
需要转义!@ibrahimmahrir这取决于您的正则表达式解释器。由于我不知道什么语言受到影响,我假设它是
Javascript
Perl
BASH
,在这种情况下,它们处理某些字符的方式不同。我的解决方案处理所有语言的所有情况ges.他给问题加了标签!太棒了。我用javascript工作。对我来说效果很好。如果有任何进一步的修改,请编辑答案。这将帮助我更多。正则表达式的良好演示和解释良好的演示帮助了我。我用
Gt%再次尝试了你的解决方案:=yh^5%3f
它允许
\
等。请告诉我,我一定会接受你的回答。
/^(?=.*\d)(?=.*[~!@#$%^&*)(_+:[}="`-])(?=.*[a-z])(?=.*[A-Z])[~!@#$%^&*)(+:[}="`\w-]{8,}$/