项目里面 需要对已手机号码进行 如下的显示

比如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方法中的正则表达式用法的更多相关文章

  1. String类replaceAll方法正则替换深入分析

    作者网址: https://my.oschina.net/shipley/blog/98973 背景:      前几天有人发了一个关于下面问题的贴,对这个有点好奇,故花时间做了点研究.       ...

  2. Xml中SelectSingleNode方法中的xpath用法

    https://blog.csdn.net/wf520pb/article/details/2644549 最常见的XML数据类型有:Element, Attribute,Comment, Text. ...

  3. function方法中this的用法

    jsp<select class="mokuai2" onchange="Mokuai2Change(this.value)"></selec ...

  4. Golang中的RegExp正则表达式用法指南

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  5. 浅谈JavaScript中的正则表达式(适用初学者观看)

    浅谈JavaScript中的正则表达式 1.什么是正则表达式(RegExp)? 官方定义: 正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去 ...

  6. Java语言中的正则表达式

    正则表达式是什么? 正则表达式是一种强大而灵活的文本处理工具.初学正则表达式时,其语法是一个难点,但它确实是一种简洁.动态的语言.正则表达式提供了一种完全通用的方式,能够解决各种字符串处理相关的问题: ...

  7. 基础知识 - Golang 中的正则表达式

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  8. String.replaceAll()方法替换字符串中的反斜杠(\)

    replaceAll()方法实际是采用正则表达式的规则去匹配的. 在regex中"\\"表示一个"\",在java中一个"\"也要用&quo ...

  9. java基础---->String中replace和replaceAll方法

    这里面我们分析一下replace与replaceAll方法的差异以及原理. replace各个方法的定义 一.replaceFirst方法 public String replaceFirst(Str ...

随机推荐

  1. extjs文件上传

    EXT学习教程:http://www.cnblogs.com/iamlilinfeng/category/385121.html Ext文件上传: 例子用到的jar:   1.upload.js /* ...

  2. Jsoncpp 数组的使用

    JsonCpp 是一个C++用来处理JSON 数据的开发包.下面讲一下怎么使用JsonCpp来序列化和反序列化Json对象,以实际代码为例子. 反序列化Json对象 比如一个Json对象的字符串序列如 ...

  3. http://d3js.org/

    http://d3js.org/ http://www.ourd3js.com/wordpress/?p=51 http://www.ourd3js.com/wordpress/?p=104file: ...

  4. java JDK8 学习笔记——第17章 反射与类加载器

    第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang ...

  5. 关于<a href='javascript:function()'>

    <a href='javascript:function()'> 这样写是为了让这个链接不要链接到新页面转而执行一段js代码.和onclick能起到同样的效果,一般来说,如果要调用脚本还是 ...

  6. [LeetCode] Decode Ways(DP)

    A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...

  7. css3 transition属性变化与animation动画的相似性以及不同点

    下面列子中的2个图片的效果. http://zqtest.e-horse.cn/DongXueImportedCar/assets/mouseOverAnimate.html 第一个为transiti ...

  8. magento多语言中文语言包

    语言包key:http://connect20.magentocommerce.com/community/Mage_Locale_zh_CN

  9. PMP--论文部分

    个人观点,是三个部分最简单,最容易复习的,当然,如果你没有做好一个项目的摘要和正文的背诵,连各个过程的工具输输入输出的都记不住几个,就不用往下看了,以上内容的观点,至少保证真题做三次以上,书籍教材看三 ...

  10. Linux中挂载移动硬盘的方法

    - fdisk -l 找出移动硬盘对应的设备 - mkdir 创建挂载点 mkdir /mnt/usb - mount mount -t ntfs-3g /dev/sdb1  /mnt/usb - u ...