正则表达式

(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地址是否合法身份证号码是否合法邮政编码相关推荐

  1. JavaScript正则表达式验证身份证号码是否合法

    在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客.下面就此实现方法给大家讲解下. 很多时候我们都是通过一组正则表达式来判断用户输入的身份 ...

  2. JS正则表达式常见用法实例详解

    这篇文章主要介绍了JS正则表达式常见用法,结合实例形式分析了javascript元字符.分组符.修饰符.量词基本含义,并结合具体案例形式分析了javascript正则基本使用技巧,需要的朋友可以参考下 ...

  3. 正则表达式-匹配中英文、字母和数字,手机号,电话号码, 身份证,邮编

    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理.1.匹配中文:[\u4e00-\u9fa5]2.英文字母:[a-zA-Z] ...

  4. JavaScript+Regex 身份证号码的正则表达式及验证详解

    简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是&q ...

  5. PHP 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座、以及判断是否是身份证号

    PHP 根据身份证号码,获取性别.获取生日.计算年龄.获取地址.获取生肖.获取星座.以及判断是否是身份证号 方法教程: 1.PHP根据身份证号码,获取性别. 2.PHP根据身份证号码,获取生日. 3. ...

  6. PHP 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座、以及判断是否是身份证号...

    1.PHP根据身份证号码,获取性别. 2.PHP根据身份证号码,获取生日. 3.PHP根据身份证号码,计算年龄. 4.PHP根据身份证号码,获取地址. 5.PHP判断字符串,是不是身份证号码. 6.P ...

  7. js正则表达式 验证手机号,email地址和邮政编码等等等等。。。

    //手机号码的验证(13开头18开头和158,159开头,共11位) var re; var ss=document.getElementById('textbox3').val; re= /^(13 ...

  8. js正则表达式 验证手机号,email地址和邮政编码

    转载自:http://hi.baidu.com/648385674/item/bac6792c843b1ef050fd878c //手机号码的验证(13开头18开头和158,159开头,共11位) v ...

  9. python正则表达式提取电话号码_Python学习笔模式匹配与正则表达式之电话号码和Email地址提取程序...

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

最新文章

  1. win7旗舰版下配置IIS服务器
  2. IBM Cloud Speech to Text 语音识别
  3. 单点登录与权限管理本质:cookie安全问题
  4. 分科目统计每科前三名的学生
  5. Linux 常用命令与设置
  6. 前端学习(2363):数据缓存
  7. collection转换为list_JAVA 集合 接口继承关系和实现,List,Set,Map(总结)
  8. mysql查询数据库报错sql_mode_MySQL数据库的sql_mode
  9. JS 取得当前时间日期
  10. ResNet的学习笔记~
  11. Oracle网格控制器OMA端安装Yast
  12. ubuntu 安装 man 查看函数原型
  13. 基于微信小程序的旧物交易平台(二手交易) 毕设
  14. android 优酷 api接口,腾讯优酷网站视频引用接口
  15. NOIP2019数字游戏
  16. 2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】
  17. 统计推断-经典统计推断
  18. 报错:No coverage information was collected, exit without writing coverage information
  19. 嵌入式系统与普适计算
  20. 招投标概念及注意事项

热门文章

  1. 最新手机厂商Android kernel内核下载
  2. Dynamic Programming 01 —knapsack problem(动态规划背包问题)
  3. 计算机义讲活动总结,计算机社团活动总结.pdf
  4. 手把手教你免费流畅访问GitHub
  5. 10 分钟实现 Spring Boot 发生邮件功能
  6. 东北大学计算机英语复试,东北大学计算机考研复试英语口语常见问题.doc
  7. python制作ico图标_用Python提取exe图标icon | 学步园
  8. golang面试题题目归纳
  9. Thinkphp3.2.3 ----后台----跨表取出指定数据
  10. delphi 打开指定网址