Java之正则表达式和String正则Api(完结)

2018-06-29  本文已影响0人  如果仲有听日

对正则表达式的学习,千万不要死记硬背,只需要达到查看匹配规则表可以看懂别人的正则表达式、能写出需求的正则表达式即可

1. 正则表达式的匹配规则

规则的种类:字符、字符类、预定义字符类、边界匹配器、数量词

直接引用别人的博文查询匹配规则:

https://www.cnblogs.com/SQP51312/p/6121744.html

字符相关规则 边界匹配器 数量词 其他

2. 正则练习

2.1 练习一

写出满足如下匹配规则的字符串:"[0-9]{6,12}"

解读:匹配6~12位的数字字符串

"234234"->true

"42734"->false

"244424236801" ->true

"2444242368011" ->false

2.2 练习二

写出满足如下匹配规则的字符串:"1[34578][0-9]{9}"

解读:匹配11位的手机号码,第一位是1,第二位是34578其中一个,之后是9位任意数字

"15828618018"->true

"16828618018"->false

"1582861801"->false

"158286180188"->false

2.3 练习三

写出满足如下匹配规则的字符串:"a*b"

解读:0个或多个a开始,以b结束的字符串

"b"->true

"ab"->true

"aaaaaaaaaaaaaab"->true

"bb"->false

"bab"->false

"ba"->false

"cb"->false

3. String类中三个正则表达式方法

3.1 字符串匹配:boolean matches(String regexStr)

3.1.1 检查QQ号码是否合法

解读不能以0开头,全数字,位数最少5位最多10位

可以使用易懂的[0-9],也可以使用转义的[\\d],注意这里是两个\, 第一个\将第二个\转成普通\

public static void checkQQ(String testStr, String regexStr) {

    boolean ret = testStr.matches(regexStr);

    System.out.println(ret);

}


3.1.2 检查手机号码是否合法

解读:1开头,第二位是34578其中一个,总位数是11位

public static void checkPhone(String testStr, String regexStr) {

    boolean ret = testStr.matches(regexStr);

    System.out.println(ret);

}

3.1完整代码

3.2 字符串切割:String[] splite(String regexStr)

3.2.1 将字符串根据单个字符来切分

解读:正则应该只是单个字符即可regexStr = "@";

public static void splitTest(String testStr, String regexStr) {

    String[] retStr = testStr.split(regexStr);

    for(String str:retStr) {

        System.out.println(str);

    }

}

3.2.2 将字符串按照空格切割,空格可能为一个或多个

解读:正则应该为" +"

3.2.3 切割ip地址

解读:正则应该为"\\.",因为一个"."表示任意字符,必须进行转义

3.2完整代码

3.3 字符串替换:String replaceAll(String regexStr, String replaceStr)

将数字替换为#,正则为"[\\d]+" 则连着的数字用一个#表示;"[\\d]"则每一个数字都用#替换

public static void replaceTest(String testStr, String regexStr) {

    String retStr = testStr.replaceAll(regexStr, "#");

    System.out.println(retStr);

}

3.3示例代码

4 正则高阶练习

4.1 匹配正确的数字

4.2 匹配合法邮箱地址

解读:@前面:数字、字母、_个数不能少于1个

@后面:数字、字母,个数不能少于1个

.后面:字母

“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“12-34.com.cn”,分析可得域名类似“*@*.*”组成

第一部分: [a-zA-Z_0-9]+

第二部分:@

第三部分:[a-zA-Z0-9]

第四部分:(\\.[a-zA-Z]+)+

最后结果:[a-zA-Z_0-9]+@[a-zA-Z0-9](\\.[a-zA-Z]+)+

上一篇下一篇

猜你喜欢

热点阅读