我正在开发一个需要密码验证的应用 .
我应该检查密码字符串是否只包含字母数字和惩罚,至少应该是字母和数字的组合来传递 .
有人可以帮助我并分享一个适用于此验证的正则表达式吗?
谢谢
使用lookaheads的想法 .
^(?=\D*\d)(?=.*?[a-zA-Z])\p{Graph}+$
或者作为Java字符串:
"^(?=\\D*\\d)(?=.*?[a-zA-Z])\\p{Graph}+$"
(?=\D*\d) 第一次前瞻检查digit
(?=\D*\d)
(?=.*?[a-zA-Z]) 至少一个alpha的第二个
(?=.*?[a-zA-Z])
来自^ start to $ end \p + one or more .
\p{Graph} 由 [\p{Alnum}\p{Punct}] 组成
\p{Graph}
[\p{Alnum}\p{Punct}]
\p{Alnum} 字母数字字符 [A-Za-z0-9]
\p{Alnum}
[A-Za-z0-9]
\p{Punct} !"#$%&'()*+,-./:;<=>?@[]^_{|}~` 之一
\p{Punct}
!"#$%&'()*+,-./:;<=>?@[]^_
See demo at regexplanet (Java)
1 回答
使用lookaheads的想法 .
或者作为Java字符串:
(?=\D*\d)
第一次前瞻检查digit(?=.*?[a-zA-Z])
至少一个alpha的第二个来自^ start to $ end \p + one or more .
\p{Graph}
由[\p{Alnum}\p{Punct}]
组成\p{Alnum}
字母数字字符[A-Za-z0-9]
\p{Punct}
!"#$%&'()*+,-./:;<=>?@[]^_
{|}~` 之一See demo at regexplanet (Java)