正则表达式的用法及手机号码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 = Pattern.compile(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 = Pattern.compile(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 = Pattern.compile(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位数字)
正则表达式的用法及手机号码Email地址是否合法身份证号码是否合法邮政编码相关推荐
- JavaScript正则表达式验证身份证号码是否合法
在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份 ...
- JS正则表达式常见用法实例详解
这篇文章主要介绍了JS正则表达式常见用法,结合实例形式分析了javascript元字符.分组符.修饰符.量词基本含义,并结合具体案例形式分析了javascript正则基本使用技巧,需要的朋友可以参考下 ...
- 正则表达式-匹配中英文、字母和数字,手机号,电话号码, 身份证,邮编
在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理.1.匹配中文:[\u4e00-\u9fa5]2.英文字母:[a-zA-Z] ...
- JavaScript+Regex 身份证号码的正则表达式及验证详解
简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是&q ...
- PHP 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座、以及判断是否是身份证号
PHP 根据身份证号码,获取性别.获取生日.计算年龄.获取地址.获取生肖.获取星座.以及判断是否是身份证号 方法教程: 1.PHP根据身份证号码,获取性别. 2.PHP根据身份证号码,获取生日. 3. ...
- PHP 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座、以及判断是否是身份证号...
1.PHP根据身份证号码,获取性别. 2.PHP根据身份证号码,获取生日. 3.PHP根据身份证号码,计算年龄. 4.PHP根据身份证号码,获取地址. 5.PHP判断字符串,是不是身份证号码. 6.P ...
- js正则表达式 验证手机号,email地址和邮政编码等等等等。。。
//手机号码的验证(13开头18开头和158,159开头,共11位) var re; var ss=document.getElementById('textbox3').val; re= /^(13 ...
- js正则表达式 验证手机号,email地址和邮政编码
转载自:http://hi.baidu.com/648385674/item/bac6792c843b1ef050fd878c //手机号码的验证(13开头18开头和158,159开头,共11位) v ...
- python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
最新文章
- win7旗舰版下配置IIS服务器
- IBM Cloud Speech to Text 语音识别
- 单点登录与权限管理本质:cookie安全问题
- 分科目统计每科前三名的学生
- Linux 常用命令与设置
- 前端学习(2363):数据缓存
- collection转换为list_JAVA 集合 接口继承关系和实现,List,Set,Map(总结)
- mysql查询数据库报错sql_mode_MySQL数据库的sql_mode
- JS 取得当前时间日期
- ResNet的学习笔记~
- Oracle网格控制器OMA端安装Yast
- ubuntu 安装 man 查看函数原型
- 基于微信小程序的旧物交易平台(二手交易) 毕设
- android 优酷 api接口,腾讯优酷网站视频引用接口
- NOIP2019数字游戏
- 2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】
- 统计推断-经典统计推断
- 报错:No coverage information was collected, exit without writing coverage information
- 嵌入式系统与普适计算
- 招投标概念及注意事项
热门文章
- 最新手机厂商Android kernel内核下载
- Dynamic Programming 01 —knapsack problem(动态规划背包问题)
- 计算机义讲活动总结,计算机社团活动总结.pdf
- 手把手教你免费流畅访问GitHub
- 10 分钟实现 Spring Boot 发生邮件功能
- 东北大学计算机英语复试,东北大学计算机考研复试英语口语常见问题.doc
- python制作ico图标_用Python提取exe图标icon | 学步园
- golang面试题题目归纳
- Thinkphp3.2.3 ----后台----跨表取出指定数据
- delphi 打开指定网址