正则表达式

正则表达式:实现字符串的复杂操作:

正则表达式是一串特定字符,组成一个“规则字符串”,这个“规则字符串”是描述文本规则的工具。正则表达式就是记录文本规则的代码,例如:

[a-z]:表示a到z的任意一个字符

[a-z]+:表示由一个或多个a到z的字符组成的字符串

[^abc]:表示除了a,b,c的任意字符

[abc]:表示a,b,c中任意一个字符

[a-zA-Z0-9]:表示a-z A-Z 0-9中的任意一个字符

[a-z&&[^bc]]:表示a-z中除了bc以外的任意一个字符

" . ":表示任意一个字符

“ \d ":表示任意一个数字字符

“ \w ":表示单词字符,相当于[a-zA-Z0-9]

“ \s":表示空白字符  ,相当于[\t\n\x0B\f\r]

“ \D":表示非数字字符

“ \W ":表示非单词字符

“ \S":表示非空白字符

”X?“:表示0个或1个X

”X+“:表示1个到任意多个X

”X*“:表示0个或任意多个X

”X{n}“:表示n个X

”X{n, }“:表示n个到任意多个X

”X{n,m}“:表示n个到m个X

分组”()“

分组:()圆括号表示分组,可以将一系列正则表达式看作一个整体,分组时可以使用”|“表示”或“关系

例如:匹配手机号前面的区间:

(\+86|0086)?\s?\d{11}

圆括号表示这里需要出现”+86“或则”0086“

边界匹配:

^表示字符串开始

$表示字符串结束

例如:匹配用户名从头到尾8-10个单词字符

\w{8,10}

^\w{8,10}$

第一种写法,则”abcd1234_abcd"是可以通过验证的

第二种由于有从头到尾整体的限定,验证不能通过

String提供了支持正则表达式的方法1
 boolean matches(String regex)
使用给定的正则表达式验证当前字符串是否满足格式要求 ,需要注意,给定的正则表达式无论是否添加边界符(^$)都是做全匹配验证

例如:

String mail = "youjb@qq.com";
邮箱的正则表达式格式:[a-z0-9A-Z_]+@[a-z0-9A-Z_]+[\.[a-zA-Z]+]+
正则表达式只是用来验证格式是否正确
验证的时候只要遇见一个’\‘就加一个’\‘
 boolean flag = mail.matches("[a-z0-9A-Z_]+@[a-z0-9A-Z_]+[\\.[a-zA-Z]+]+");
 boolean flag1 = mail.matches("[\\w]+@[\\w]+[\\.[a-zA-Z]+]+");

Java支持正则表达式方法2
 String[] split(String regex)
将当前字符串按照满足正则表达式的部分拆分,将拆分出来的内容存入字符串数组并返回

例如:String str = "abd123def456gh";

             String[] data = str.split("[0-9]+");
 按照数字部分进行拆分,获得所有字母部分 ,若连续匹配了拆分部分,那么中间会拆分出一个空字符串,若是在字符串末尾连续匹配 , 那么所有末尾拆分出来的空字符串全部忽略(注意:匹配“ . ”需要写成“ \\. ”)

字符串支持正则表达式方法3
String replaceAll(String regex,String str )
将当前字符串中满足正则表达式的部分替换为给定内容

例如:String str = "abc123def456gh";
        /*
         * 将当前字符串中的数字部分替换为"#NUMBER#"
         * abc#NUMBERdef#NUMBER#gh
         */
        String str1 = str.replaceAll("\\d+", "#NUMBER#");
        //String str1 = str.replaceAll("[0-9]+","#NUMBER#");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值