为了简化问题,这里对特殊字符做下限定,指:_-@&=
,大家在实际应用中,可以自行扩充这个限定的字符区间。
因此,我们的正则可以写成:
^(?=.*?[a-z])(?=.*?[0-9])(?=.*?[_\-@&=])[a-z0-9_\-@&=]+$
当然,如果需要限定字符串长度,我们后面的[a-z0-9_\-@&=]+
可以改为一个长度范围,如6-16:[a-z0-9_\-@&=]{6,16}
下面我们来解读一下上面的正则:
正则以^
开始,限定匹配字符串是从开始位置进行匹配,(?=.*?[a-z])
是肯定型顺序环视,限定当前位置的后面,能匹配.*?[a-z]
,也就是,能够匹配到一个字母,同理,(?=.*?[0-9])
表示限定当前位置的后面,能匹配一个数字,(?=.*?[_\-@&=])
表示限定当前位置的后面,能匹配一个特殊字符,而[a-z0-9_\-@&=]+
就是前面那些环视限定的位置,即表示[a-z0-9_\-@&=]+
中,至少匹配一个字母、一个数字、一个特殊字符,最终匹配到达字符串结束位置$
。
更多关于正则表达式入门的内容,请参考本站博客《我眼里的正则表达式入门教程》
更多关于正则表达式高级的内容,请参考本站博客《深入讲解正则表达式高级教程》
Windows正则表达式测试工具请从《正则表达式测试工具RegexBuddy-4.1.0》下载
Mac正则表达式测试工具请从《Mac正则表达式测试工具》下载
未经同意禁止转载!
转载请附带本文原文地址:正则表达式必须包含字母数字和特殊字符,首发自 Zjmainstay学习笔记