这个你要根据移动和其他号码不同的地方 , 也就是开头三位数来判断啊
我们提供的服务有:网站制作、成都做网站、微信公众号开发、网站优化、网站认证、嵊州ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的嵊州网站制作公司
可以将手机号用字符来表示
然后用String的 startsWith("150") 方法来判断 , 当然如果这样的话 , 你需要搜集移动号码的所有可能性 , 然后用 || 逻辑或 放在一起
或者你也可以把所有移动手机号所属的前三位 放到一个数组或者集合中 , 比如{"150","158"}
然后把需要判断的手机号 截取前三位 , 判断是否在集合或者数组中
用正则判断,
/**
* 验证手机号码格式是否正确
* @param mobiles
* @return true 表示正确 false表示不正确
*/
public static boolean isMobileNum(String mobiles) {
Pattern p = Pattern.compile("^((13[0-9])|(15[0-9])|(18[0-9]))\\d{8}");
Matcher m = p.matcher(mobiles);
return m.matches();
}
当然手机号码好像还有17开头的,对应的正则改一下就好
"^((13[0-9])|(15[0-9])|(18[0-9])|(17[0-9]))\\d{8}"
然后在你的代码里面调用这个方法,如果结果为false,就throw new MyException(“手机号码格式不正确”)一个异常。
异常定义可以去继承Exception
/**
* Created by Kevin on 2015/3/30.
*/
public class MyException extends Exception{
private String msg;
public MyException(String msg) {
super(msg);
this.msg = msg;
}
@Override
public String getMessage() {
return msg;
}
}
写在前面:最好还是用正则表达式,简单易懂,易于维护
===================================
//这个方法判断是不是合法的手机号码
public boolean isPhoneNumber(String phoneNumber){
//手机号码长度
int phoneLength=phoneNumber.length();
//第一位是不是0
String phoneOne=phoneNumber.substring(0,1);
//是不是 +86形式
int is86=phoneNumber.indexOf("+86");
//是纯数字 并且长度等于11 并且第一位不是0 并且 不包含+86
return isNumeric(phoneNumber)phoneLength==11!phoneOne.equals("0")is86==-1;
}
//这个方法判断字符串是不是纯数字
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() ){
return false;
}
return true;
}
if(isNaN(x)){}
这个就是判断是不是数字.
如果为真,说明a不是数字 如果为假,则说明a是数字
如果你要判断长度对不对啊 也可以用
if(x.length=7||x.length=12){} 限制电话号码在7-12位之间
/**
* 验证是否是手机号码
*
* @param str
* @return
*/
public static boolean isPhone(String str) {
if (ValidationUtils.isEmpty(str)) {
return false;
}
Pattern pattern = Pattern.compile("^(1[3,4,5,7,8][0-9])\\d{8}$");
Matcher matcher = pattern.matcher(str);
boolean b = matcher.matches();
return b;
}
/**
* 是否是座机电话号码
*
* @param str
* @return
*/
public static boolean isFixedLine(String str) {
if (ValidationUtils.isEmpty(str)) {
return false;
}
Pattern pattern = Pattern
.compile("^([0-9]{3}-?[0-9]{8})|([0-9]{4}-?[0-9]{7})$");
Matcher matcher = pattern.matcher(str);
boolean b = matcher.matches();
return b;
}
public class NiHao { public static void main(String[] args) { String str = "18946178006"; // 一个字符串 boolean flag = true;// 声明boolean变量,并为真 if (str.length() == 11) {// 判断手机号码的长度,length()方法是活的str这个字符串的长度 for (int i = 0; i str.length(); i++) {// 利用for循环,从str的第一位开始检测也就是1开始到6结束 char c = str.charAt(i);// charAt(i)是获取str这个字符串的第i+1位上的字符,也就是下标为i的char型变量,分别为1,8,9.。。。6 if (!Character.isDigit(c)) {//每次循环,都要判断一下这个c是不是数字 flag = false; //如果不是数字,将flag设置为false break; //只要有一个非数字,则终止循环 } } }else{ flag = false ; //如果长度不是11位,将flag设置为flag } if (flag) { System.out.println("是手机号"); } else { System.out.println("不是"); } } } 我给你修改了一下,看看那里还看不懂。温馨提示,手机号码可不是这样判断的,假如str="00000000000",你能说它是手机号码么?最好用正则表达式