!387 固话号码无'-'符号无法判断是否为固话, 另增加获取固话号码中区号和号码的方法

Merge pull request !387 from Lv丶小胖/v5-dev
This commit is contained in:
Looly 2021-07-29 07:14:10 +00:00 committed by Gitee
commit b68f3e4e2d
3 changed files with 56 additions and 1 deletions

View File

@ -78,7 +78,7 @@ public interface RegexPool {
/**
* 座机号码
*/
String TEL = "0\\d{2,3}-[1-9]\\d{6,7}";
String TEL = "(010|02\\d|0[3-9]\\d{2})-?(\\d{6,8})";
/**
* 座机号码+400+800电话
*

View File

@ -161,4 +161,28 @@ public class PhoneUtil {
public static CharSequence subAfter(CharSequence phone) {
return StrUtil.sub(phone, 7, 11);
}
/**
* 获取固话号码中的区号
*
* @param value 完整的固话号码
* @return 固话号码的区号部分
* @since 5.7.6
*/
public static CharSequence subTelBefore(CharSequence value)
{
return ReUtil.getGroup1(PatternPool.TEL, value);
}
/**
* 获取固话号码中的号码
*
* @param value 完整的固话号码
* @return 固话号码的号码部分
* @since 5.7.6
*/
public static CharSequence subTelAfter(CharSequence value)
{
return ReUtil.get(PatternPool.TEL, value, 2);
}
}

View File

@ -65,4 +65,35 @@ public class PhoneUtilTest {
Assert.assertEquals("1234", PhoneUtil.subBetween(mobile));
Assert.assertEquals("5678", PhoneUtil.subAfter(mobile));
}
@Test
public void testNewTel() {
ArrayList<String> tels = new ArrayList<>();
tels.add("010-12345678");
tels.add("01012345678");
tels.add("020-9999999");
tels.add("0209999999");
tels.add("0755-7654321");
tels.add("07557654321");
ArrayList<String> errTels = new ArrayList<>();
errTels.add("010 12345678");
errTels.add("A20-9999999");
errTels.add("0755-7654.321");
errTels.add("13619887123");
for (String s : tels) {
Assert.assertTrue(PhoneUtil.isTel(s));
}
for (String s : errTels) {
Assert.assertFalse(PhoneUtil.isTel(s));
}
Assert.assertEquals("010", PhoneUtil.subTelBefore("010-12345678"));
Assert.assertEquals("010", PhoneUtil.subTelBefore("01012345678"));
Assert.assertEquals("12345678", PhoneUtil.subTelAfter("010-12345678"));
Assert.assertEquals("12345678", PhoneUtil.subTelAfter("01012345678"));
Assert.assertEquals("0755", PhoneUtil.subTelBefore("0755-7654321"));
Assert.assertEquals("0755", PhoneUtil.subTelBefore("07557654321"));
Assert.assertEquals("7654321", PhoneUtil.subTelAfter("0755-7654321"));
Assert.assertEquals("7654321", PhoneUtil.subTelAfter("07557654321"));
}
}