正则表达式必须包含字母数字和特殊字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式必须包含字母数字和特殊字符相关的知识,希望对你有一定的参考价值。

参考技术A 正则表达式要实现必须包含字母数字和特殊字符,那么,我们就必须判断该字符串中:

1. 包含字母

2. 包含数字

3. 包含特殊字符

为了简化问题,这里对特殊字符做下限定,指:_-@&=,大家在实际应用中,可以自行扩充这个限定的字符区间。

因此,我们的正则可以写成:

^(?=.*?[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_\-@&=]+中,至少匹配一个字母、一个数字、一个特殊字符,最终匹配到达字符串结束位置$。

密码正则表达式必须包含至少 8 个字符,至少 1 个数字、字母和特殊字符

【中文标题】密码正则表达式必须包含至少 8 个字符,至少 1 个数字、字母和特殊字符【英文标题】:Regex for password must contain at least 8 characters, at least 1 number, letters and special characters 【发布时间】:2015-01-18 00:20:19 【问题描述】:

我需要一个至少有一个数字字符的正则表达式,允许大小写字母,也允许特殊字符 我正在使用这个表达式

/^.*(?=.6,10)(?=.*\d)(?=.*[a-zA-Z]).*$

但它对最大字符数 10 无效。

【问题讨论】:

【参考方案1】:

好像你想要这样的东西,

^(?=.*\d)(?=.*?[a-zA-Z])(?=.*?[\W_]).6,10$

上面的正则表达式只允许 6 到 10 个字符。它还检查至少一位数字、大写或小写字母和至少一个特殊字符(字母和数字以外的字符)。

【讨论】:

为什么不:^(?=.*\d)(?=.*?[a-zA-Z])(?=.*?[\W_]).6,10$ (?=.*?[\W_]) 在这种情况下是多余的。 @AvinashRaj:越小越好,不要忘记前瞻:) 我不知道 op 是否要检查至少一个特殊字符。如果他不想,那么他必须和你一起去。【参考方案2】:

以下正则表达式将限制您的长度并允许使用特殊字符。

^(?=.*\d)(?=.*[a-zA-Z]).6,10$

【讨论】:

与我在 Avinash 的答案中发布的评论相同,不需要 (?=.6,10$) 前瞻,因为可以在匹配本身代替 .* 我赞成你们两个都相信两个都是正确的答案:)

以上是关于正则表达式必须包含字母数字和特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式验证密码必须由大小写字母、数字、特殊字符组成

js正则怎么判断一个字符串里必须包含大写字母,小写字母,数字,特殊字符? 看清楚了,是必须包含,求教

js 正则校验 首位必须是字母、必须包含数字和字母 、允许特殊字符

密码的正则表达式必须包含 8 个字符,2 个小写或大写字母和 1 个特殊字符 '*' 5 位数字

js正则判断一个字符串里必须包含大写字母,小写字母,数字,特殊字符? 必须包含其中三项,求教

java 正则表达式 包含字母数字特殊字符