Java 编写过滤手机号码或者固定电话的工具类 博客分类: Java Base Java
程序员文章站
2024-03-24 21:47:34
...
以下是分享自己编写的用于过滤手机号码、固定电话、黑名单的工具类TelCheckUtils,
import java.util.HashSet; import java.util.Set; import java.util.regex.Pattern; public class TelCheckUtils { public static final Set<String> UNNEEDTEL = new HashSet<>(); static { //写在配置文件中 String repaetContacts = FundamentalConfigProvider.getString("repeatContacts.phone.unneededTels"); String[] contacts = repaetContacts.split(","); for (String contact : contacts){ UNNEEDTEL.add(contact); } } /** * 验证手机号码(支持国际格式,+86135xxxx...(中国内地),+00852137xxxx...(中国香港)) * @param mobile 移动、联通、电信运营商的号码段 *<p>移动的号段:134(0-8)、135、136、137、138、139、147(预计用于TD上网卡) *、150、151、152、157(TD专用)、158、159、187(未启用)、188(TD专用)</p> *<p>联通的号段:130、131、132、155、156(世界风专用)、185(未启用)、186(3g)</p> *<p>电信的号段:133、153、180(未启用)、189</p> * @return 验证成功返回true,验证失败返回false */ public static boolean checkMobile(String mobile) { String regex = "(\\+\\d+)?1[3458]\\d{9}$"; return Pattern.matches(regex,mobile); } /** * 验证不必要的号码 * @param mobile * @return */ public static boolean checkUnNeedTel(String mobile) { return UNNEEDTEL.contains(mobile)||mobile.startsWith("400"); } /** * 验证固定电话号码 * @param phone 电话号码,格式:国家(地区)电话代码 + 区号(城市代码) + 电话号码,如:+8602085588447 * <p><b>国家(地区) 代码 :</b>标识电话号码的国家(地区)的标准国家(地区)代码。它包含从 0 到 9 的一位或多位数字, * 数字之后是空格分隔的国家(地区)代码。</p> * <p><b>区号(城市代码):</b>这可能包含一个或多个从 0 到 9 的数字,地区或城市代码放在圆括号—— * 对不使用地区或城市代码的国家(地区),则省略该组件。</p> * <p><b>电话号码:</b>这包含从 0 到 9 的一个或多个数字 </p> * @return 验证成功返回true,验证失败返回false */ public static boolean checkPhone(String phone) { String regex = "(\\+\\d+)?(\\d{3,4}\\-?)?\\d{7,8}$"; return Pattern.matches(regex, phone); } /** * 包括固话和手机号 * @param str * @return 验证通过返回true */ public static boolean isTelNumber(String str) { return checkMobile(str)&&!checkUnNeedTel(str); } }
其他的还可以看:
http://blog.csdn.net/afei__/article/details/51482801