我有这个正则表达式来测试应该免费的电话#。
public static final Pattern patternTollFree = Pattern.compile("^((877)|(800)|(866)|(888))");
因此,我只想获取那些用户可能已将1留在字符串开头的那些#,但是我尝试了几件事,但无法获取java进行匹配。
public String changeRingTo( String changedRinger )
{
if ( null == changedRinger || changedRinger.length() != 10)
return changedRinger;
if ( patternTollFree.matcher(changedRinger).region(0, 2).matches() )
changedRinger = '1' + changedRinger;
return changedRinger;
}
我无法通过下面的第二个测试用例成功。我究竟做错了什么?
assertEquals( "Regex not working", "8189091000", of.changeRingTo("8189091000"));
assertEquals( "Regex not working", "18769091000", of.changeRingTo("8769091000"));
最佳答案
您的第二个测试用例失败,因为它以876
开头,这不是有效的免费电话前缀。另外,如另一个答案所示,您应该将region(0, 2)
更改为region(0, 3)
,尽管整个行可以大大简化。
关于java - 用于Java中免费电话号码的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2668307/