我正在尝试组成一个模式,它与任何语言中的密码相匹配。
比赛要求是:-
我相信你可以从我下面的模式中看到,我迷路了!!
/^(?=.*[\p{Ll}])(?=.*[\p{Lu}])(?=.*\p{Nd})(?=.*[@$!%*?&])[\p{Lu}\p{Ll}\p{Nd}$@$!%*?&]{8,}$/u
测试字符串
发布于 2017-12-08 10:28:48
\p{Lu}匹配大写Unicode字母,\p{Ll}匹配小写Unicode字母。中文字母是无纸化的,它们可以与\p{L} (以及所有其他字母)匹配。
在消费部分使用\p{L}:
/^(?=.*\p{Ll})(?=.*\p{Lu})(?=.*\p{Nd})(?=.*[@$!%*?&])[\p{L}\p{Nd}@$!%*?&]{8,}$/u
^^^^^注意,密码仍然必须有大写字母和小写字母。如果您只想要求一个中文字母或大写小写字母,请使用
/^(?:(?=.*\p{Han})|(?=.*\p{Ll})(?=.*\p{Lu}))(?=.*\p{Nd})(?=.*[@$!%*?&])[\p{L}\p{Nd}$@!%*?&]{8,}$/u
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^在这里,(?:(?=.*\p{Han})|(?=.*\p{Ll})(?=.*\p{Lu}))需要一个中文字母(\p{Han})或一个uppercase+lowercase字母。
https://stackoverflow.com/questions/47712328
复制相似问题