最近迷上了正则,对预搜索始终不得要领,请帮忙解释下
//验证一个字符串,必须包含不少一个大写字母,一个小写字母,一个数字, 字符串的长度为6-10
String reg1 = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,10}$";
String testStr = "aA001a";
问题1,能否解释下这个表达式,主要是前面3个组问题2,在消化过程中,想写如下需求的表达式,
//验证一个字符串,中间为abc,abc 两边必须包含不少于一个大写字母,一个小写字母,一个数字,且这个长度为3-6;
String testStr = "1bBabcBb1";
//验证一个字符串,必须包含不少一个大写字母,一个小写字母,一个数字, 字符串的长度为6-10
String reg1 = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{6,10}$";
String testStr = "aA001a";
问题1,能否解释下这个表达式,主要是前面3个组问题2,在消化过程中,想写如下需求的表达式,
//验证一个字符串,中间为abc,abc 两边必须包含不少于一个大写字母,一个小写字母,一个数字,且这个长度为3-6;
String testStr = "1bBabcBb1";
解决方案 »
- 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问某个月的兔子总数为多少?
- 一道不同类型数据间加法运算的疑惑
- 关于ConcurrentHashMap, thread-safe的问题
- 急!一个急于解决的读写问题。大家快来帮帮菜鸟吧!
- 初学JAVA,请问如何才能看到JAVA类库的源代码?
- 基础
- 显示数字小数结果不正确,方法无错误
- java连接sql数据库问题
- 求救如何在通过java向已经存在的excel中写入数据?
- Jbulder开发环境中,代码编辑时,光标在字母的中间,请问如何处理?
- 如何知道文件mime类型
- JFreeChart如何将横坐标的日期竖直的方式显示?
另外还有一些其他语法解释和例子的帖子,有兴趣的话可以去看看。http://topic.csdn.net/u/20080627/14/8a91b33a-f35c-4303-85b5-e0a8da462202.htmlhttp://topic.csdn.net/u/20080325/17/fb7a3e8d-029a-4d8e-89ae-77a9d28ec301.htmlhttp://topic.csdn.net/u/20080503/01/3c82b040-43b9-4b44-847d-07b366285957.htmlhttp://topic.csdn.net/u/20080520/19/175eb3fa-e3b0-4330-b274-e7e9dabc93c0.htmlhttp://topic.csdn.net/u/20080610/17/15b8828c-43d5-43c5-803e-1f4d51ffb213.htmlhttp://topic.csdn.net/u/20080313/14/a070f343-7fb3-4c19-86ba-36b56c780295.htmlhttp://topic.csdn.net/u/20080529/18/6c4e70e9-4510-4af0-8874-207c5a9a1788.html
第一个括号代表在开始后此位置期望有任意个小写字母,或任意个大写字母,或任一个数字,但必须是6-10位的。如果还不理解,请google:零宽断言 或 向前查看与向后查看
这个问题有问题啊,长度为 3~6,“abc,abc”已经是 7 个字符了,这还没算上两边的字符!另外,“两边必须包含不少于一个大写字母,一个小写字母,一个数字”是指每边都得包含这些,
还是两边总共得包含这些啊?好复杂啊~~
比如 String testStr = "1bBabcBb1";
1bB(左边长度为3)
abc 中间是abc
Bb1(这个长度也为3)
import java.util.regex.Pattern;public class Test01 {
public static void main(String[] args) {
String[] test = {
"1aTabc2Fk", "1a2abc2Fk", "KaTabc2Fk",
"1aTabc23k", "1aTabck", "aaa1aTabc2Fk",
"aaaa1aTabc2Fk", "aaa1aTabc25a4Fk",
"1Tabcabcabc2Ta", "abc2cHabcabcK7a",
"7HcabcabcabccH7", "$7c@=Kabc_6@K*d"
};
String regex =
"(?=[^a-z]*[a-z].*(abc))" +
"(?=[^A-Z]*[A-Z].*\\1)" +
"(?=[^0-9]*[0-9].*\\1)" +
".{3,6}" +
"\\1" +
"(?=[^a-z]*[a-z])" +
"(?=[^A-Z]*[A-Z])" +
"(?=[^0-9]*[0-9])" +
".{3,6}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("");
for(int i = 0; i < test.length; i++) {
System.out.printf("%18s %-5s%n",
test[i],
matcher.reset(test[i]).matches()
);
}
}
} 1aTabc2Fk true
1a2abc2Fk false
KaTabc2Fk false
1aTabc23k false
1aTabck false
aaa1aTabc2Fk true
aaaa1aTabc2Fk false
aaa1aTabc25a4Fk true
1Tabcabcabc2Ta true
abc2cHabcabcK7a true
7HcabcabcabccH7 true
$7c@=Kabc_6@K*d true不知道是这个意思么?
你是mm的话,我肯定拜倒在你石榴裙下,是gg么,就拜为师了,呵呵
有空我把你所有的正则帖子整理一下^*o*^