浅析一个匹配数字和字母密码的正则表达式

一个用户注册功能的密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。

如何分析需求?拆分!这就是软件设计的一般思路了。于是乎,拆分需求如下:

1,不能全部是数字

2,不能全部是字母

3,必须是数字或字母

只要能同时满足上面3个要求就可以了,写出来如下:

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$

分开来注释一下:

^ 匹配一行的开头位置

(?![0-9]+$) 预测该位置后面不全是数字

(?![a-zA-Z]+$) 预测该位置后面不全是字母

[0-9A-Za-z] {8,16} 由8-16位数字或这字母组成

$ 匹配行结尾位置

注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。

测试用例如下:

public class Test { public static void main(String[] args) throws Exception { String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$"; String value = "aaa"; // 长度不够 System.out.println(value.matches(regex)); value = "1111aaaa1111aaaaa"; // 太长 System.out.println(value.matches(regex)); value = "111111111"; // 纯数字 System.out.println(value.matches(regex)); value = "aaaaaaaaa"; // 纯字母 System.out.println(value.matches(regex)); value = "####@@@@#"; // 特殊字符 System.out.println(value.matches(regex)); value = "1111aaaa"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aaaa1111"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aa1111aa"; // 数字字母组合 System.out.println(value.matches(regex)); value = "11aaaa11"; // 数字字母组合 System.out.println(value.matches(regex)); value = "aa11aa11"; // 数字字母组合 System.out.println(value.matches(regex)); } }

以上所述是小编给大家介绍的一个匹配数字和字母密码的正则表达式 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-20 06:30:09

浅析一个匹配数字和字母密码的正则表达式的相关文章

JS只能输入数字或数字和字母等的正则表达式_正则表达式

JS判断只能是数字和小数点 0.不能输入中文 1)<input onpaste="return false;" type="text" name="textfield" style="width:400px; ime-mode:disabled" value=""> 2) 复制代码 代码如下: <script> function chkIt(frm){ if (frm.n1.valu

JS只能输入数字或数字和字母等的正则表达式

JS判断只能是数字和小数点 0.不能输入中文 1)<input onpaste="return false;" type="text" name="textfield" style="width:400px; ime-mode:disabled" value=""> 2) 复制代码 代码如下: <script> function chkIt(frm){ if (frm.n1.valu

js正则表达式匹配数字字母下划线等_javascript技巧

1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾: ^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$ 其中: ^ 与字符串开始的地方匹配 (?!_) 不能以_开头 (?!.*?_$) 不能以_结尾 [a-zA-Z0-9_\u4e00-\u9fa5]+ 至少一个汉字.数字.字母.下划线 $ 与字符串结束的地方匹配 放在程序里前面加@,否则需要\\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]

javascript正则匹配汉字、数字、字母、下划线

 javascript正则检测只含有汉字.数字.字母.下划线不能以下划线开头和结尾,需要的朋友可以参考下 javascript正则检测只含有汉字.数字.字母.下划线不能以下划线开头和结尾   遇到一个用户名检测的的问题,查了一下,总结例子如下:  代码如下: var reg = /^(?!_)(?!.*?_$)[a-zA-Z0-9_u4e00-u9fa5]+$/; if (!reg.test(实际取值的字符串)) {     alert('请输入5-24位字符:支持中文.英文.数字."_&quo

求一个正则表达式(要求字符串长度6到12位,必须包含数字和字母,在此基础上可以包含其他任意字符)

问题描述 求一个正则表达式(要求字符串长度6到12位,必须包含数字和字母,在此基础上可以包含其他任意字符) (要求字符串长度6到12位,必须包含数字和字母,在此基础上可以包含其他任意字符) 解决方案 ^(?![^a-zA-Z]+$)(?!D+$).{6,12}$

求个正则匹配数字区间格式,如(10,100),中间一定为一个逗号,括号可以死[和(

问题描述 求个正则匹配数字区间格式,如(10,100),中间一定为一个逗号,括号可以死[和( 求个正则匹配数字区间格式,如(10,100),中间一定为一个逗号,括号可以是[和(,数字不用定死位数和大小 解决方案 下面的只验证格式,没有验证第一位一定要小于第二位 ^(d+,d+)|[d+,d+]$ 解决方案二: var r = s.match(/((|[)d+,d+()|])/); console.info(r[1]); console.info(r[2]); 解决方案三: 可以考虑使用栈,遇见"

php验证用户名是否以字母开头与验证密码只能为数字和字母的组合代码

 代码如下 复制代码  function is_email($email)  {   if (preg_match("/[a-za-z0-9]+@[a-za-z0-9]+.[a-z]{2,4}/",$email,$mail))   {       return true;   }   else   {       return false;   }  }  /**   * 验证用户名是否以字母开头   */    代码如下 复制代码 function is_user_name($use

javascript正则匹配汉字、数字、字母、下划线_基础知识

javascript正则检测只含有汉字.数字.字母.下划线不能以下划线开头和结尾 遇到一个用户名检测的的问题,查了一下,总结例子如下: 复制代码 代码如下: var reg = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/;if (!reg.test(实际取值的字符串)) {    alert('请输入5-24位字符:支持中文.英文.数字."_",推荐使用中文');}

javascript 正则判断密码类型(纯数字 纯字母 字母开头+任意字符)

先给大家看看正则规则 文本  /^(\d+)$/ 对应 "纯数字"  /^([a-zA-Z]+)$/ 对应 "纯字母"  /^([a-zA-Z].+)$/ 对应 "字母开头+任意字符"  /^([0-9a-zA-Z]+)$/ 对应 "数字+字母任意组合"  /^([\s\S]+)$/ 对应 "未分类" 例子  代码如下 复制代码 function test(str, re, msg) {     var r