String的replaceAll方法中的正则表达式用法
项目里面 需要对已手机号码进行 如下的显示
比如15088688388 要显示为150****8388的效果
实现这个简单的效果 方法有很多
我想试试用正则表达式去实现
查了点资料最终试出来以下方法可行
System.out.println("15088688388".replaceAll("(\\d{3})(\\d{4})","$1****"));
输出结果:150****8388
首先对replaceAll方法的第一个参数进行解释
第一个参数指定了需要替换的地方
(\\d{3})表示"15088688388" 这个字串的前3位,即"150",视为第1组,跟第二个参数的$1相对应,(\\d{4})则表示跟在前三位之后的4位,即"8868",视为第2组。
当然(\\d{3}),也可以写成(150) 这种子串,,(\\d{4})可以写成(8868),所以最终也可以写成这样System.out.println("15088688388".replaceAll("(150)(8868)","$1****"));
replaceAll方法的第二个参数表示对需要替换的地方怎么个替换法
在第二个参数的"$1****"中,$1表示第一个参数中的第1组,即(\\d{3}),也即"150"。"****"是追加在"150"后面,"$1****"表示"150****"。同样,如果第二个参数里面出现$2,就表示第一个参数的第二组,就是(\\d{4}),即"8868"。
需要注意的是,如果第一个参数定义了几个组,第二个参数中没出现相对应的分组$,那就是去掉的意思。上面那个例子中,$2没出现,相当于replace.("8868", "")的作用。
还有$0表示整个字符串的意思,即第一个参数的所有分组组成的字串,上述例子的(\\d{3})(\\d{4}),即"1508868"。
再举例一个
String str = "012345678231206546123";
System.out.println(str.replaceAll("(123)(45678)", "$1.jsp"));
打印出的结果是:
0123.jsp231206546123
String的replaceAll方法中的正则表达式用法的更多相关文章
- String类replaceAll方法正则替换深入分析
作者网址: https://my.oschina.net/shipley/blog/98973 背景: 前几天有人发了一个关于下面问题的贴,对这个有点好奇,故花时间做了点研究. ...
- Xml中SelectSingleNode方法中的xpath用法
https://blog.csdn.net/wf520pb/article/details/2644549 最常见的XML数据类型有:Element, Attribute,Comment, Text. ...
- function方法中this的用法
jsp<select class="mokuai2" onchange="Mokuai2Change(this.value)"></selec ...
- Golang中的RegExp正则表达式用法指南
------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...
- 浅谈JavaScript中的正则表达式(适用初学者观看)
浅谈JavaScript中的正则表达式 1.什么是正则表达式(RegExp)? 官方定义: 正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去 ...
- Java语言中的正则表达式
正则表达式是什么? 正则表达式是一种强大而灵活的文本处理工具.初学正则表达式时,其语法是一个难点,但它确实是一种简洁.动态的语言.正则表达式提供了一种完全通用的方式,能够解决各种字符串处理相关的问题: ...
- 基础知识 - Golang 中的正则表达式
------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...
- String.replaceAll()方法替换字符串中的反斜杠(\)
replaceAll()方法实际是采用正则表达式的规则去匹配的. 在regex中"\\"表示一个"\",在java中一个"\"也要用&quo ...
- java基础---->String中replace和replaceAll方法
这里面我们分析一下replace与replaceAll方法的差异以及原理. replace各个方法的定义 一.replaceFirst方法 public String replaceFirst(Str ...
随机推荐
- Java的访问控制
类内部 本包(实例.类变量和方法) 子类(任何位置) 外部包(实例.类变量和方法) public √ √ √ √ protected √ √ √ × default ...
- Netty 4(一) zero copy
Netty的“零拷贝”主要体现在如下三个方面: 1) Netty的接收和发送ByteBuffer采用DIRECT BUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝. ...
- 查看特性Attribute数据
加载程序集 Assembly loAssembly = Assembly.Load( lcAssembly ) ; Type[ ] laTypes = loAssembly.GetTypes( ...
- Angular自动双向绑定值
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...
- iOS Block传值
上个月,针对block恶补了一下,以为自己全部掌握了,其实不尽然. 昨天项目中在下载的时候用到,自己竟然不知道该从何下手,惭愧~ 情景是这个样子的:我写了个下载类,阴老师在调用时,将参数(sid,UR ...
- php empty isset is_null
总是忘记这些变量的区别,参考下http://www.jb51.net/article/38020.htm,记录下 设置几个变量 <?php $a; $b = false; $c = ''; $d ...
- synchronized锁自旋
http://www.jianshu.com/p/5dbb07c8d5d5 原理 通常说的synchronized在方法或块上加锁,这里的锁就是对象锁(当然也可以在类上面),或者叫重量锁,在JVM中又 ...
- 使用Aspose.Cell控件实现Excel高难度报表的生成(二)
继续在上篇<使用Aspose.Cell控件实现Excel高难度报表的生成(一)>随笔基础上,研究探讨基于模板的Aspose.cell报表实现,其中提到了下面两种报表的界面,如下所示: 或者 ...
- pwd命令(转)
Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...
- 腾讯企鹅智酷100多张PPT:移动时代创业黄金法则
移动时代创业黄金法则 http://tech.qq.com/a/20141223/008325.htm#p=8