//^ 匹配输入字符串开始的位置
//$ 匹配输入字符串结尾的位置
//* 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配z,zo,zoo等
Pattern p = Pattern.compile("^zo*$");
Matcher m = p.matcher("zooo");
System.out.println("*测试:" + m.matches());
//+ 一次或多次匹配前面的字符或子表达式。例如,“zo+”与“zo”和“zoo”匹配,但与“z”不匹配
p = Pattern.compile("^zo+$");
m = p.matcher("z");
System.out.println("+测试:" + m.matches());//false
//? 零次或一次匹配前面的字符或子表达式。例如,“do(es)?”匹配“do”或“does”中的“do”
p = Pattern.compile("^zo?$");
m = p.matcher("zo");
System.out.println("?测试:" + m.matches());
//{n} n 是非负整数。正好匹配 n 次
//{n,} n 是非负整数。至少匹配 n 次
//{n,m} M 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次
//? 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,
//匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串
//例如,在字符串"oooo"中,“o+?”只匹配单个“o”,而“o+”匹配所有“o”。
//. 匹配除“\n”之外的任何单个字符(必须是一个字符)
p = Pattern.compile("^z.$");
m = p.matcher("z");
System.out.println(".测试:" + m.matches());//false
//x|y 匹配 x 或 y
//[xyz] 字符集。匹配包含的任一字符
//[^xyz]反向字符集。匹配未包含的任何字符
//[a-z] 字符范围。匹配指定范围内的任何字符
//[^a-z]反向范围字符。匹配不在指定的范围内的任何字符
//\b 匹配一个字边界,即字与空格间的位置。例如,“er\b”匹配“never”中的“er”,但不匹配“verb”中的“er”
//http://www.cnblogs.com/newsouls/p/3781812.html
//\B 非字边界匹配。“er\B”匹配“verb”中的“er”,但不匹配“never”中的“er”。
// \d 数字字符匹配。等效于 [0-9]。
// \D 非数字字符匹配。等效于 [^0-9]。
// \s 匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。
p = Pattern.compile("^z\\sz$");
m = p.matcher("z z");
System.out.println("\\s测试:" + m.matches());//true
// \S 匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效。
// \w 匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。
// \W 与任何非单词字符匹配。与“[^A-Za-z0-9_]”等效。
参考:http://www.codeyyy.com/regex/introduce/grammar/index.html
几个常用的正则
public static boolean isMobileNO(String mobiles) {
// 13\\d{9}
// 14[57]\\d{8}
// 15[0-35-9]\\d{8}---//150到153,155到159
// 17[678]\\d{8}
// 18\\d{9}
// 170[059]\\d{7}
Pattern p = Pattern.compile("^1(3\\d|4[57]|5[0-35-9]|7[678]|8\\d)\\d{8}|170[059]\\d{7}$");
Matcher m = p.matcher(mobiles);
System.out.println("手机号格式正确么?" + m.matches());
return m.matches();
}
public static boolean isPersonID(String ID) {
// 一二代身份证正则表达式(15/18位)
Pattern p = Pattern.compile("^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$|^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X|x)$");
Matcher m = p.matcher(ID);
System.out.println("身份证格式正确么?" + m.matches());
return m.matches();
}
public static boolean isEmail(String email) {
Pattern p = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*.\\w+([-.]\\w+)*$");
Matcher m = p.matcher(email);
System.out.println("电子邮件格式正确么?" + m.matches());
return m.matches();
}
public static boolean isIP(String ip) {
Pattern p = Pattern.compile("^((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)$");
Matcher m = p.matcher(ip);
System.out.println("IP格式正确么?" + m.matches());
return m.matches();
}