200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 正则表达式的用法及手机号码Email地址是否合法身份证号码是否合法邮政编码

正则表达式的用法及手机号码Email地址是否合法身份证号码是否合法邮政编码

时间:2019-01-17 06:45:07

相关推荐

正则表达式的用法及手机号码Email地址是否合法身份证号码是否合法邮政编码

正则表达式

(1)正则表达式概念:

​ 正则表达式(regular expression)描述了一种字符串 -regex

​ 匹配的模式,可以用来:校验

(a)检查一个串中是否含有符合某个规则的子串,并且可以得到这个子串;(b)根据匹配规则对字符串进行灵活的替换操作。

(2)常见表达式:

[a] :匹配a这个字符 当一个字符时[]可以省略[abc] :匹配a,b,c中的任意字符 abc[0-9] :匹配0-9中的一个数字 [a-z] :匹配26个英文小写字母 [A-Z] :匹配26个英文大写字母[a-zA-Z]:匹配26个英文字母[a-zA-Z0-9]:英数(英文 数字)[a-zA-Z0-9_] : 匹配单词字母(匹配字母,数字,下划线)\d :匹配0-9中的一个数字\w : 匹配单词字母(匹配字母,数字,下划线)\D : 匹配非数字字母\W : 匹配非单词字母\s : 匹配空白字符(空格,换行,tab制表符). 匹配任意字符?:最多出现一次+:至少出现一次 *:可出现任意次数 |左右两边表达式之间 "或" 关系。{n} :代表出现n次 {n,}:代表出现至少N次 a{3,} {n, m}:代表最少出现n次,最多出现m次^ :①如果出现在正则表达式的第一个字符上,代表以...开头, ②、否则代表非$ : 代表以...结尾

​ () 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。

​ []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字

​ {}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。

(3)应用:

​ a.String中方法

​ 1.replaceAll(String regex)

​ 2.split(String regex)

​ 3.matches(String regex) 告知此字符串是否匹配给定的正则表达式。 (String reg) 返回布尔类型

​ b.专门用作正则表达式的API类

​ Pattern pattern = pile(regex);

​ Matcher match = p.matcher(str);

​ while(match.find()){// 代表发现匹配的元素

​ String content = m.group();// 获取正则表达式匹配的内容

(4)案例:

@Testpublic void test_replaceAll(){String str = "123 abc444a111";str = str.replaceAll("abc.*", "abc efg");System.out.println(str);}@Testpublic void test_replace(){String str = "123 abc444a111abc";str = str.replace("abc.*", "abc efg");// replace注意参数不是正则表达式System.out.println(str);}@Testpublic void test_split(){//使用regex进行字符串切割称为模式匹配String str = "abcd1aaaa3sss5";System.out.println(Arrays.toString(str.split("\\d")));//例如以数字作为分隔符}@Testpublic void test_split_2(){String filePath = "E:\\a\\b.txt";System.out.println(Arrays.toString(filePath.split("\\\\")));//java中\\ 表示\ 而正则中\\也表示\,所以\\\\解析为\\}/*** 例如:校验是否是数字*/@Testpublic void test_match1(){Scanner sc = new Scanner(System.in);System.out.println("请输入一个数字:");String inputStr = sc.nextLine();if(!inputStr.matches("\\d*")){// 判断单个字符是否是数字用\d 多个字符可以考虑任意次数*System.out.println("您输入的不是数字。");return;}int num = Integer.parseInt(inputStr);System.out.println("您输入的是数字可以进行数字业务操作");}/*** 例如:校验是否是数字然后以逗号分隔*/@Testpublic void test_match2(){Scanner sc = new Scanner(System.in);System.out.println("请输入一组数字逗号分隔:");String inputStr = sc.nextLine();if(!inputStr.matches("\\d+(,\\d+)*")){// 判断单个字符是否是数字用\d 多个字符可以考虑任意次数\d*System.out.println("您输入的格式不对或包含非数字,请输入一组数字按照逗号分隔。");return;}System.out.println(Arrays.toString(inputStr.split(",")));}@Test/*** 手机号码验证"^1[3|4|5|7|8][0-9]{9}$“* */public void test2(){String telNum = "15936270517";String regex = "^1[3|4|5|7|8][0-9]{9}$";if(!telNum.matches(regex)){System.out.println("非手机号");}else {System.out.println("手机号正常");}}/*** 匹配如下满足连续11位数字的数字*/@Testpublic void test3(){String str = "15936270517abcd3333ff15936270516";String regex = "\\d{11}";System.out.println("\t");Pattern pattern = pile(regex);Matcher matcher = pattern.matcher(str);while(matcher.find()){//匹配,是否找到String num = matcher.group();// 获取匹配的子字符串System.out.println(num);}}@Test/*** html文本内容*/public void test4(){String html = "<p>你好</p>中国</br>";String regex = "<[^>]+>";html = html.replaceAll(regex, "");System.out.println(html);}

@Testpublic void test1(){String str = "hello world,are you OK? world,world is OK world, world";String subStr = "world";int count=0;int index =0;while((index=str.indexOf(subStr))!=-1){count++;str =str.substring(index+subStr.length()-1);}System.out.println(count);}@Testpublic void test2(){String str = "hello world,are you OK? world,world is OK world, world";String regex="world";int count=0;Pattern pattern = pile(regex);Matcher matcher = pattern.matcher(str);while(matcher.find()){count++;}System.out.println(count);}

(5)特殊需求

例如:

Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*$域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。