对于正则表达式的整理,也参照了网上其他人的博客,在此做一个简单记录。
几个关键字符的作用:
t.n .表示任何单个字符
匹配 tan tin ton t_n t n等
t[]n 括号制定范围 单个字符
t[]n 括号制定范围 单个字符
t[aeio]n 匹配 tan ten tin ton
t(a|e|i|o|oo)n 可以匹配多个如oo
匹配: tan ten tin ton toon
匹配次数:靠近左边
* 0/多次
+ 1/多次
? 0/1
{n} 恰好n次
{n,m}从n次到m次
999-99-9999和999999999都属于正确的格式。这时,你可以在连字符号后面加上“?”数量限定符号
[0-9]{3}\-?[0-9]{2}\-?[0-9]{4}
^ 否 表示不想匹配的字符
不以X开头的字符串 [^X][a-z]+
\s空白符
格式为“June 26, 1951”的生日日期中提取出月份部分,
[a-z]+\s+[0-9]{2},\s*[0-9]{4}
\s+必须空格
\s*可选空格
^ 行的开头,请在正则表达式的开始处使用^。例如:^(abc)表示以abc开头的字符串。注意编译的时候要设置参数MULTILINE,如 Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
$ 行的结尾,请在正则表达式的结束处使用。例如:(^bca).*(abc$)表示以bca开头以abc结尾的行。
$ 行的结尾,请在正则表达式的结束处使用。例如:(^bca).*(abc$)表示以bca开头以abc结尾的行。
//String ss = "008109012345678";
//0出现0次或多次
//[0-9]{2} 出现2次
//0? 出现0次/1次0
java中用法:
String regEx1 ="0*(81)0?([7,8,9])[0-9]{8,9}";
Pattern pat = Pattern.compile(regEx1);
Matcher mat = pat.matcher(phone);
return mat.find()
页面测试工具
更清晰的一篇文章 http://www.jb51.net/article/16829.htm 我认为是写的比较清晰,一看就懂的。
另一篇文章 http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html 没看全 辜负了30分钟 先留着