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 ...
随机推荐
- extjs文件上传
EXT学习教程:http://www.cnblogs.com/iamlilinfeng/category/385121.html Ext文件上传: 例子用到的jar: 1.upload.js /* ...
- Jsoncpp 数组的使用
JsonCpp 是一个C++用来处理JSON 数据的开发包.下面讲一下怎么使用JsonCpp来序列化和反序列化Json对象,以实际代码为例子. 反序列化Json对象 比如一个Json对象的字符串序列如 ...
- http://d3js.org/
http://d3js.org/ http://www.ourd3js.com/wordpress/?p=51 http://www.ourd3js.com/wordpress/?p=104file: ...
- java JDK8 学习笔记——第17章 反射与类加载器
第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang ...
- 关于<a href='javascript:function()'>
<a href='javascript:function()'> 这样写是为了让这个链接不要链接到新页面转而执行一段js代码.和onclick能起到同样的效果,一般来说,如果要调用脚本还是 ...
- [LeetCode] Decode Ways(DP)
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- css3 transition属性变化与animation动画的相似性以及不同点
下面列子中的2个图片的效果. http://zqtest.e-horse.cn/DongXueImportedCar/assets/mouseOverAnimate.html 第一个为transiti ...
- magento多语言中文语言包
语言包key:http://connect20.magentocommerce.com/community/Mage_Locale_zh_CN
- PMP--论文部分
个人观点,是三个部分最简单,最容易复习的,当然,如果你没有做好一个项目的摘要和正文的背诵,连各个过程的工具输输入输出的都记不住几个,就不用往下看了,以上内容的观点,至少保证真题做三次以上,书籍教材看三 ...
- Linux中挂载移动硬盘的方法
- fdisk -l 找出移动硬盘对应的设备 - mkdir 创建挂载点 mkdir /mnt/usb - mount mount -t ntfs-3g /dev/sdb1 /mnt/usb - u ...