java正则表达式 用户名_java之正则表达式

内容目录

正则表达式介绍

正则表达式重要类

通配符介绍

捕获组

实例

正则表达式介绍:

用于搜索或处理文本

正则表达式重要类:

正则表达式中设计两个中的类,分别是 Pattern和Matcher

Pattern是正则表达式的编译类,用于编译表达式;该类没有公共的构造方法,只能通过Pattern p = Pattern.compile(regex) 来获取

Matcher对象是增则表达式的匹配类,正则表达式编译好后用于匹配文本。

通配符介绍:

\ : 转义字符,可以匹配特殊符号或者元字符,"\\"匹配"\",“\(”匹配“(”,“.”匹配"." 等

?:匹配子表达式零次或一次

*:匹配子表达式0次或多次

+:匹配子表达式1次或多次

{n}:n为非负整数,表达式匹配n次,比如:[A-Za-z0-9_]{10}匹配字符数字下划线3位,即可以匹配a2_、_2b,不能匹配超过3位的字符串

{n,}:n为非负整数,表达式匹配至少n次,如果是{0,}等同于*,如果是{1,}等同于+,如果是{0,1}等同于?

{n,m}:n,m均为非负整数,且n<=m

\b:匹配一个边界,比如:cat\b可以匹配bbcat,但不能匹配bbcatb

\B:匹配非边界字符,比如:cat\B可以匹配bbcatb,但不能匹配bbcat

\d:匹配一个数字字符,等价于[0-9]

\D:匹配一个非数字字符,等价于[^0-9]

\s:匹配空白字符,比如空格,制表符等

\S:匹配任何非空白

\w:匹配字符数字下划线,等价于[A-Za-z0-9_]

\W:匹配非字母数字下划线,等价于[^A-Za-z0-9_]

捕获组:

从表达式左侧开始,每遇到一个左括号“(” 记作一个分组,编号从1开始,编号为0时代表整个表达式

实例:

1.匹配用户名:

//匹配用户名

public voidregexUser() {

String regex= "^(\\w){3,10}$";//相当于^[A-Za-z0-9_]{3,10}

String input = "aaaa_11235";boolean isMatch =Pattern.matches(regex, input);if(isMatch) {

System.out.println("MATCH SUCCESS");

}else{

System.out.println("MATCH FAILURE");

}

}

2.捕获组:public classGroupTest2 {

public static voidmain(String[] args) {

String regex= "^((\\d{4})-(\\d{2}))-(\\d{2})$";

String input= "2019-01-02";

Pattern p= Pattern.compile(regex);//编译表达式

Matcher m = p.matcher(input); //匹配输入值

if (m.find()) {//是否匹配

int count = m.groupCount();//捕获组数量

for (int i = 0; i <= count; i++) {

System.out.println(m.group(i));

}

}

}

}

//输出值

2019-01-02

2019-01

2019

01

02

3.捕获组命名

//捕获组命名

public static voidgroupMM(){

String regex= "^(?(?\\d{4})-(?\\d{2}))-(?\\d{2})$";

String input= "2019-01-02";

Pattern p= Pattern.compile(regex);//编译表达式

Matcher m = p.matcher(input); //匹配输入值

if (m.find()) {//是否匹配

System.out.println(m.group("ym"));

System.out.println(m.group("year"));

System.out.println(m.group("month"));

System.out.println(m.group("date"));

}

}

//输出值

2019-01

2019

01

02

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值