java正则表达式屏蔽手机号码

王朝学院·作者佚名  2012-03-16
窄屏简体版  字體: |||超大  

现在有需求需要把帖子、文章里的手机号码屏蔽,都用星号*替换掉,网上找了下,发现他们的方法会把超过11位的数字也匹配出来,并且替换掉前11位,导致不该屏蔽的被屏蔽了,最常见的就是url里的长串数字被误杀,于是我改良了一下,jsp代码如下:

[blackwhite]<%

StringBuffer bstr = new StringBuffer();

String title = "《1234567890》《18888888888》《11113710170895》《88888888888》";

Pattern p_phone = Pattern.compile("(1[0-9]{10,})");/*把1开头11位及以上的数字都匹配出来*/

Matcher m_phone = p_phone.matcher(title);

out.println(title);

out.println("<br>");

while(m_phone.find()){

if(m_phone.group(1).length()==11)/*只把1开头且正好11位的数字替换掉*/

m_phone.appendReplacement(bstr,"***********");

}

m_phone.appendTail(bstr);

out.println(bstr);

%>[/blackwhite]

运行结果:

《1234567890》《18888888888》《11113710170895》《88888888888》

《1234567890》《***********》《11113710170895》《88888888888》

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航