1.手机号码的正则表达式:
现在有13、14、15、17、18打头的手机号,有的会习惯性的输入手机号前缀0、86、17951(因为有的拨打长途要加上前缀),所以应该也算是正确的号码。
另外附上现在号码的集合(当然这个也不是最新的,仅供参考):点击打开链接
public class MatchDemo {
public static void main(String[] args) {
// 方法一,可以修改13、14、15、17、18后面的一位数字,举例“13[578]”即前两位为“13”时,第三位只能为“5,7,8”
String telMatch = "^(0|86|17951)?(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])[0-9]{8}$";
// 方法二,表示以13、14、15、17、18开头的号码,后面9位为任意的数字。
String telMatch1 = "^(0|86|17951)?(1[34578])[0-9]{9}$";
String tel = "13345678999";
System.out.println(tel.matches(telMatch1));//如果返回true,则判断是正确的手机号码,反之不然
}
}
2.身份证号码的正则表达式:
应该至少要符合以下两个条件:
a、15位或18位,如果是15位,必需全是数字。
b、如果是18位,最后一位可以是数字或字母Xx,其余必需是数字。
String cardMatch="^(\\d{15}$|^\\d{18}$|^\\d{17}(\\d|X|x))$";
String card = "34122819941012802x";
System.out.println(card.matches(cardMatch));