正则校验手机号java java正则匹配手机号_正则校验手机号java


常见应用

  • 匹配字符串

需求:验证手机号码是否合法:

手机号码的规则:

号码是11位数字;
号码只能以1开头;
号码的第二位可以是:3,4,5,7,8;
从第三位开始后面的数字都可以是0到9的任意数字;


正则校验手机号java java正则匹配手机号_ide_02


一般开发中,像这种负责验证某种字符串规则的正则表达式,一般都不会改变;例如,验证手机号、验证邮箱等正则表达式;

在开发中,像这种基本不会改变的东西,应该定义为常量;

像这种特殊用途的常量,一般都会抽取到一个固定的工具类中,方便整个程序里面使用;


正则校验手机号java java正则匹配手机号_正则校验手机号java_03



  • 分割字符串

需求:按重复的字符分隔字符串:”qwe##asdf####zx#######cv”;


正则校验手机号java java正则匹配手机号_字符串_04


正则校验手机号java java正则匹配手机号_手机号正则_05



替换字符串

  • 替换重复的相同字符

需求:替换字符串中重复的#为-:

1、原字符串:”qwe##as#df####zx#######cv”;

替换后:”qwe-as#df-zx-cv”;


正则校验手机号java java正则匹配手机号_ide_06


  • 替换重复的不同字符

1、原字符串:”qwe##asdfxxxxzx%%%%%cv”;

替换后:”qwe-asdf-zx-cv”;


正则校验手机号java java正则匹配手机号_手机号正则_07


  1. 原字符串:”qwe##asdfxxxxzx%%%%%cv”;

替换后:”qwe#asdfxzxc%cv”;


正则校验手机号java java正则匹配手机号_手机号正则_08


  1. 将一个手机号中间四位替换为****表示;前三位和后四位不变;

例如:168 8888 8888 替换后为: 168 **** 8888


正则校验手机号java java正则匹配手机号_ide_09


正则校验手机号java java正则匹配手机号_正则表达式_10

https://www.zhihu.com/video/1067487492223270912



  • 获取字符串中匹配的子串

通过正则表达式获取字符串中匹配的子串的步骤:

1、通过正则规则和Pattern类的静态函数compile 创建Pattern类的实例对象: Pattern p = Pattern.compile(正则规则);
2、根据创建的Pattern对象和要匹配的字符串创建匹配器对象(Matcher类的实例对象);Matcher m = p.matcher(“匹配的字符串”);
3、通过匹配器对象的find方法判断是否有匹配对象: boolean b = m.find();
如果有,使用group方法获取匹配的子串: String str = m .group();

需求:获取字符串"张三:13233332323;李四:15666668888;王五:18288999988"中所有电话号码;


正则校验手机号java java正则匹配手机号_正则校验手机号java_11


正则校验手机号java java正则匹配手机号_ide_12



正则表达式总结

正则表达式,在Java中的体现就是一个字符串,可以表示一定的匹配规则,专门用于字符串的匹配的;正则表达式,是一门在很多领域都广泛使用的技术,不是Java独有的;
正则表达式的组成:

  • 一般字符:表示匹配自身;如:”a”,表示匹配的字符传的值只能是”a”;所有普通字符串,都可以看作是一个正则表达式,匹配的是它自身;
  • 字符类:使用中括号[]和里面的内容组成,表示一个字符的取值范围;如:[a-z]:表示被匹配的字符的值可以是所有的小写字母;
  • 预定义字符类:使用特殊符号或转义字符组成的表示特殊匹配范围的规则,如:”.”
  • 边界匹配器:表示匹配一些字符串的边界,如:^:表示匹配一行的开始;$:表示匹配一行的结束;
  • 数量词:前面必须跟一个规则,表示这个规则可以重复的次数;如:d+:表示最少有一个数字;.?:表示最多有一个任意字符;
  • 组:使用小括号将一个或多个规则括起来,就形成了组;在同一个正则表达式中,后面引用前面定义的组中的规则,格式是: 组号
  • 在同一个语句中,后面的正则表达式也可以引用前面正则表达式中定义的规则,使用的格式是: $组号

正则中的组,组号是按照组的书写顺序,从前往后,从1开始,逐渐递增的;如:

  1. (b):定义了两个组;1组:(a);2组:(b);

(a(b(cde)(f))):定义了四个组;1组:(a(b(cde)(f)));2组:(b(cde)(f);3组:(cde);4组:(f);

调用组的地方匹配的内容和被调用组中匹配的内容一致;

  1. 正则表达式的常见应用,有字符串的匹配、切割、替换和获取;

匹配、切割和替换的应用,直接通过String类提供的方法就可以完成;

获取功能,需要经过三步:

  1. 先根据写好的正则表达式创建一个Pattern类的对象;
  2. 根据创建的Patter类对象和要匹配的字符串出创建一个匹配器对象;
  3. 通过匹配器对象来匹配和获取需要的子字符串;判断是否有匹配的子串;