正则婊达式
正则表达式
描述一段规则 看我们现有的东西是否匹配这段规则 (正则表达式不属于JAVA )
pattern和matcher
compile(String regex)
将给定的正则表达式编译到模式中。
Pattern p = Pattern.compile("1[3578]\\d{9}");
Matcher m = p.matcher("13999988888");
System.out.println(m.matches());
^ 匹配字符串的开始
$ 匹配字符串的结束
\s 任何空白字符
\S 任何非空白字符
\d 匹配一个数字字符,等价于[0-9]
\D 除了数字之外的任何字符,等价于[^0-9]
\w 匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_]
\W 任何非单字字符,等价于[^a-zA-z0-9_]
. 除了换行符之外的任意字符
{n} 匹配前一项n次
{n,} 匹配前一项n次,或者多次
{n,m} 匹配前一项至少n次,但是不能超过m次
* 匹配前一项0次或多次,等价于{0,}
+ 匹配前一项1次或多次,等价于{1,}
? 匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}
x|y
匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。
[xyz]
字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[a-z]
字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。 注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
(pattern)
匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“(”或“)”。
例
邮箱
Pattern p = Pattern.compile("\\w{5,15}@(qq|163|126|gmail).(com|cn)");
Matcher m = p.matcher("lxhxqx9109@163.com");
System.out.println(m.matches());
身份证 //1920年1月1日-2016年11月24日
Pattern p = Pattern.compile("\\d{6}((19[2-9][0-9]|20[0-1][0-5])((01|03|05|07|08|10|12)([1-2][0-9]|0[1-9]|3[0-1])|(04|06|09|11)([1-2][0-9]|0[1-9])|02(1[0-9]|0[1-9]|2[0-8]))|2016((01|03|05|07|08|10)([1-2][0-9]|0[1-9]|3[0-1])|(04|06|09)([1-2][0-9]|0[1-9])|02(1[0-9]|0[1-9]|2[0-8])|11(0[1-9]|1[0-9]|2[0-4])))\\d{3}([0-9xX])");
Matcher m = p.matcher("51060320161032293x");
System.out.println(m.matches());