一个匹配数字和字母密码的正则表达式
2011 年 12 月 14 日 |
Filed under:
正则表达式
and tagged with:
密码
,
正则表达式
,
零宽断言
一个用户注册功能的密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在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));
}
}
分享到:
相关推荐
在这个函数中,首先通过 `document.getElementById` 获取用户名和密码的值,然后使用正则表达式进行匹配测试。如果测试结果为真,则返回 `true` 表示用户名格式正确;否则,返回 `false` 并提示用户输入不符合要求的...
以上示例代码均演示了如何使用正则表达式检查一个字符串是否仅包含中文、数字、字母和下划线。 #### 五、总结 通过本文的介绍,我们可以了解到正则表达式是处理文本的强大工具之一。对于特定的需求,比如本例中的...
这个表达式确保密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且长度在8个字符以上。 然而,仅靠正则表达式可能不足以评估所有安全因素。例如,密码不应包含常见单词、用户个人信息或连续的...
Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...
在`EditText`中限制数字、字母和字符的输入,主要是为了创建一个安全的密码输入框,防止用户输入不符合规则的字符。以下是一些相关的知识点: 1. **正则表达式基础**: - **字符集**:`[abc]`表示匹配a、b或c中的...
它接受一个`Term`对象作为参数,该对象包含待匹配字段名和正则表达式。通过这种方式,可以在索引文档中查找符合特定模式的记录。 #### 示例代码解析 1. **索引创建**: ```java IndexWriter writer = new ...
Java正则表达式是Java语言中用于处理字符串的强大工具,它允许程序员进行复杂的字符串匹配、查找和替换操作。正则表达式(Regular Expression)是一种模式匹配语言,通过特定的语法来描述字符串的模式,用于在文本中...
在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配、查找、替换和分析字符串。在Java编程语言中,正则表达式被广泛应用于数据验证、文本提取和字符串操作。以下是对这些...
正则表达式是编程语言中用于模式匹配和字符串处理的强大工具,在Java中也不例外。Java的正则表达式功能强大,可以用于验证输入、提取信息、替换文本等多种场景。本资料"java_zhengze.rar"提供了对Java正则表达式的...
### 使用Java正则表达式实现一个简单的身份证号码验证 #### 一、背景介绍 身份证号码是中国公民的身份标识,由15位或18位数字组成(早期为15位,后改为18位)。其中,第18位是校验码,可能是数字0~9或者大写字母X。...
同时,正则表达式还提供了其他方式来匹配任意字符,例如使用字符集合([xxx])来匹配某些字符中的一个字符。 元字符和转义 在正则表达式中,元字符表示在正则表达式中不代表其字面含义,而是具有特别意义的字符。...
在这个例子中,我们创建了一个Xeger实例,然后调用其generate()方法,它将返回一个符合给定正则表达式(本例中为只包含字母和数字的字符串)的随机字符串。 另一方面,automaton(有限状态自动机)是一种计算模型,...
例如,你可以创建一个自定义验证器来确保密码满足特定条件,比如至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符: ```java String passwordRegex = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[@$!%*?&]...
这里的`\w`代表任意字母数字字符或下划线,`([-+.]\\w+)*`表示允许邮箱用户名部分包含连字符、加号、句点等,并且这些符号后还可以跟一个或多个字母数字字符或下划线。`@`后跟域名部分,其中`([-.]\\w+)*`允许域名中...
正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换操作。它由特殊字符(称为“元字符”)和普通字符组成,能够灵活地定义要查找的模式。以下是一些常见的正则表达式模式及其用途: 1. ...
正则表达式的核心在于模式匹配,通过一系列特定的字符和语法来描述一个或多个字符串的模式。例如,如果你想验证一个字符串是否为有效的邮箱地址,你可以使用如下的正则表达式: `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+...
在上述代码中,`patternStr`定义了一个正则表达式,匹配"Java"后面跟着一个空格和一个或多个字母数字字符。`Pattern.compile()`编译这个模式,`matcher`则用于在`text`中查找匹配项。`find()`方法用于查找第一个匹配...
在“数字字母特殊字符两两混合”的场景下,我们需要构建一个正则表达式来匹配满足特定条件的字符串。这个条件是每个字符都是数字、字母或特殊字符,并且它们必须两两交替出现。 首先,让我们理解一下什么是数字、...