做项目的时候不可避免的要用到各种验证,有时候如果我们写验证逻辑可能要写好长好长代码,这时候如果我们正则表达式可以很简单而且轻松的解决问题.
以下仅列出经常遇到的一些正则表达式,项目中如果还可以遇到,继续补充...
1.非负整数 (正整数+0)
"^\d+$"
解释: ^ 表示 匹配输入字符串的开始位置
\d 表示 [0-9]
$ 表示 匹配输入字符串的结束位置
2.正整数
" ^[0-9]*[1-9][0-9]*$ "
解释: * 匹配前面的子表达式零次或多次
3.由英语字母组成
"^[A-Za-z]+$ "
4.由字母数字,下划线组成
"^[a-zA-Z0-9_]+$"
解释:想想是不是在好多网站注册用户名的时候都这样?
刚上网找到个更好的,果然还是菜鸟,呵呵," ^\w+$ "
5.帐号更多条件 字母开头,允许5-16字节,允许字母数字下划线
"^[a-zA-Z][a-zA-Z0-9_]{4,15}$"
解释:{4,5} 最少4个最多15个,加上前面的一个总共是5-16个了吧.
6.email 地址 非空串@非空串
" ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ "
解释: . 匹配除 "\n" 之外的任何单个字符
7.uml 网址
"[a-zA-z]+://[^\s]*"
8.国内电话号码
"\d{3}-\d{8}|\d{4}-\d{7}"
解释:看出来了,匹配形式是这样的,010-21212121 或0476-4545454,好象没有手机的吧
9.匹配身份证
"\d{15}|\d{18}"
解释:这么简单啊,我以前以为还判断里面每个段的意义的呢?
10.好象还有个生日
"......"
解释:不都用级联的下拉列表的吗,还匹配什么啊.
11.java 代码中用法
package com.tang.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestPattern {
public static void main(String[] args) {
// TODO Auto-generated method stub
String rule = "[u4e00-u9fa5]";//匹配是否是中文
String input="18812345666";
Pattern p = Pattern.compile(rule);
Matcher m=p.matcher(input);
boolean b=m.matches();
if(b){
System.out.println("can Match");
}else{
System.out.println("cant not Match");
}
}
}
最后要提醒下,如果正则表达式有'\',注意再补上一个'\',不要问我为什么了,否则我要大声说了:你还是学JAVA的吗?
呵呵,其实我开始也忘记了,不过我有强大的IDE--Eclipse,它告诉我了!
后补一个
12 .字母数字汉字下划线空格
[a-zA-Z0-9\u4e00-\u9fa5_ ]
解释:原来不同的条件拼接起来就好了。