正则表达式

一 常用正则表达式

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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值