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

比如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. css 强制换行

    强制不换行 div{white-space:nowrap;} 自动换行div{ word-wrap: break-word; word-break: normal; } 强制英文单词断行div{wor ...

  2. Unity 区分不同平台

    问题:公司开发的游戏实在android平台上运行,但是我们是在windows平台下进行开发,OK ,经常有些地方开发完之后就要换到android上面,能区分平台的不同就可以对代码做区分处理 回答:un ...

  3. Xamarin学习资源收集

    推荐入门视频 跨行動平台App開發概觀- 使用Xamarin+Visual Studio https://www.youtube.com/watch?v=ELuFTTn1gS4 中文产品介绍http: ...

  4. shell执行mysql操作

    http://ully.iteye.com/blog/1226494 http://www.jb51.net/article/55207.htm shell执行mysql操作 mysql  -hhos ...

  5. SET ? DECLARE

    http://dev.mysql.com/doc/refman/5.7/en/declare-local-variable.html http://dev.mysql.com/doc/refman/5 ...

  6. the OS maintains a number of queues

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION To do its job, the OS ...

  7. java实现的https请求

    转载并修改自 http://www.blogjava.net/etlan/archive/2006/06/29/55767.html Https请求 超文本传输协议HTTP协议:被用于在Web浏览器和 ...

  8. 【转】简单的 Laravel 5 REST API

    Introduction Almost all successful internet based companies have APIs. API is an acronym for Applica ...

  9. 【Demo】 生成二维码 和 条形码

    条形码 和 二维码 对比 一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准. 在水平和垂直方向的二维空间存储信息的条形码, 称为 ...

  10. from xml

    /** * 将xml转为array * @param string $xml * @throws WxPayException */ public function FromXml($xml) { i ...