一 常用正则表达式
1 中文
(1) 单个汉字正则
String reg= "[\u0391-\uFFE5]";
String reg= "[\u4e00-\u9fa5]"
(2) 字符串全是汉字,且长度为6
eg:
String chinese = "汉字博大精深";
String reg= "[\u4e00-\u9fa5]{6}";
boolean f= chinese .matches(reg);
System.out.println(f);
结果: true
2 字母(包含大小写)
String reg="[a-zA-Z]"
3 数字
String reg="[0-9]";
4 名字
(1) 中英文,长度在20以内
String reg= "[a-zA-Z_\u4e00-\u9fa5]{1,20}";
(2) 中英文, 数字, 标点, 长度在20以内
String reg = "[\\u4e00-\\u9fa5_a-zA-Z0-9_\\s\\·\\~\\!\\@\\#\\¥\\%\\……\\&\\*\\(\\)\\—\\-\\+\\=\\【\\】\\{\\}\\、\\|\\;\\‘\\’\\:\\“\\”\\《\\》\\?\\,\\。\\、\\`\\~\\!\\#\\$\\%\\^\\&\\*\\(\\)\\_\\[\\]\\{\\}\\|\\;\\'\\'\\:\"\"\\,\\.\\/\\<\\>\\?]{1,20}";
5 密码
(1) 8-16位数字
String reg2phone="[0-9]{8,16}$";
(2) 大小写英文和数字,长度在8-16位
String reg2phone="[a-zA-Z0-9]{8,16}$";
(3) 字符串中必须包含大小写英文和数字, 并且大小写字母和数字都必须出现一次,长度在8-16
String reg= "^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{8,16}$";
(4) 字符串可以是数字和大小英文字母,也包含特殊字符, 长度在8-16位
6 手机号
(1) 11位数字
String reg2phone="[0-9]{11}$";
7 取字符串的所有数字
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public static void main(String[] args) {
String orgCode="S -313000 ";
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(orgCode);
orgCode = m.replaceAll("").trim();
System.out.println(orgCode);
}
二 正则表达式规则
**// 反斜杠
/t 间隔 (’/u0009’)
/n 换行 (’/u000A’)
/r 回车 (’/u000D’)
/d 数字 等价于[0-9]
/D 非数字 等价于[^0-9]
/s 空白符号 [/t/n/x0B/f/r]
/S 非空白符号 [^/t/n/x0B/f/r]
/w 单独字符 [a-zA-Z_0-9]
/W 非单独字符 [^a-zA-Z_0-9]
/f 换页符
/e Escape
/b 一个单词的边界
/B 一个非单词的边界
^为限制开头
^java 条件限制为以Java为开头字符
$为限制结尾
java$ 条件限制为以java为结尾字符
. 条件限制除/n以外任意一个单独字符
java.. 条件限制为java后除换行外任意两个字符
加入特定限制条件「[]」
[a-z] 条件限制在小写a to z范围中一个字符
[A-Z] 条件限制在大写A to Z范围中一个字符
[a-zA-Z] 条件限制在小写a to z或大写A to Z范围中一个字符
[0-9] 条件限制在小写0 to 9范围中一个字符
[0-9a-z] 条件限制在小写0 to 9或a to z范围中一个字符
[0-9[a-z]] 条件限制在小写0 to 9或a to z范围中一个字符(交集)
[]中加入后加再次限制条件「[]」
[^a-z] 条件限制在非小写a to z范围中一个字符
[^A-Z] 条件限制在非大写A to Z范围中一个字符
[^a-zA-Z] 条件限制在非小写a to z或大写A to Z范围中一个字符
[^0-9] 条件限制在非小写0 to 9范围中一个字符
[^0-9a-z] 条件限制在非小写0 to 9或a to z范围中一个字符
[^0-9[a-z]] 条件限制在非小写0 to 9或a to z范围中一个字符(交集)
在限制条件为特定字符出现0次以上时,可以使用「*」
J* 0个以上J
.* 0个以上任意字符
J.*D J与D之间0个以上任意字符
在限制条件为特定字符出现1次以上时,可以使用「+」
J+ 1个以上J
.+ 1个以上任意字符
J.+D J与D之间1个以上任意字符
在限制条件为特定字符出现有0或1次以上时,可以使用「?」
JA? J或者JA出现
限制为连续出现指定次数字符「{a}」
J{2} JJ
J{3} JJJ
文字a个以上,并且「{a,}」
J{3,} JJJ,JJJJ,JJJJJ,???(3次以上J并存)
文字在a个以上,b个以下「{a,b}」
J{3,5} JJJ或JJJJ或JJJJJ
两者取一「|」
J|A J或A
Java|Hello Java或Hello
「()」中规定一个组合类型
比如,我查询<a href=/"index.html/">index</a>中<a href></a>间的数据,
可写作<a.*href=/".*/">(.+?)</a>
在使用Pattern.compile函数时,可以加入控制正则表达式的匹配行为的参数:
Pattern Pattern.compile(String regex, int flag)