目前我有以下正则表达式模式:正则表达式模式小写和大写和数字或特殊字符
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,}
其是至少一个小写,一个大写,一个数字和一个特殊字符。 如何制作特殊字符可选?
目前我有以下正则表达式模式:正则表达式模式小写和大写和数字或特殊字符
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,}
其是至少一个小写,一个大写,一个数字和一个特殊字符。 如何制作特殊字符可选?
看起来像所有你需要的是一个?
后[[email protected]$!%*?&]
你的正则表达式应该是^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&]?)[A-Za-z\[email protected]$!%*?&]{8,}
'(?=。* [$ @ $!%*?&] ?)'可以缩短为。 (就是什么都没有。) – melpomene
@melpomene同意。整个'(?=。* [$ @ $!%*?&])'可以被删除,因为它是现在可选的积极向前看。 '。*'什么都不能匹配,'[$ @ $!%*?&]?'什么都不能匹配,所以整个预测都是毫无意义的'(?=。*)'。好点子。 –
我怎样才能让特殊字符可选?
只是删除先行检查特殊字符:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\[email protected]$!%*?&]{8,}$
而且它是安全使用端锚$
在你的正则表达式。
@someangular:这工作了吗? – anubhava
你能告诉我们输入字符串和相关预期输出的例子吗? – Niitaku
顺便提一下,特殊字符列表中的重复'$'是多余的。您可以使用'[$ @!%*?&]'和[A-Za-z \ d $ @!%*?&'' –