Discuss / Java / 考虑首位是否为0

考虑首位是否为0

Topic source
boolean isValidMobileNumber(String s) {
    return s.matches("\\d{11}");
}

这种方法还是不能完全辨别是否是手机号码呀

这只是稍微表达一下正则的强大和简洁罢了,显然不能匹配手机号哦

廖雪峰

#3 Created at ... [Delete] [Delete and Lock User]
^[1-9]\d{10}$

其实现在手机号的格式越来复杂,要写个最准确的正则很难,也不适合教学举例,一般项目中也只是能够满足要求就行,不会要求完美的

🌙

#5 Created at ... [Delete] [Delete and Lock User]

防君子和一些傻子小人

□▼□

#6 Created at ... [Delete] [Delete and Lock User]

老师的也不太准确 .用1~9来匹配,如果有手机号码是 12345678910,这是不对的,中国没有以12开头的号码,12开头一般是急救或者民用服务

用这个试试

^1[3-9]\\d{9}$

其中,我们第一位必须匹配'1', 然后第二位需要是 3到9 其中一个数字, 再后面的每个数字用 \\d{9} 来匹配, 也就是任意的九个数字, 这会更贴切些.

□▼□

#7 Created at ... [Delete] [Delete and Lock User]

老师的代码会匹配98765432110和12345678910,这都是不合法的手机号码,所以不太准确.

^[1-9]\d{10}$

而楼主的代码则是匹配11个数字的字符串而已,并不能取到手机号码,但你可以取到输入的字符串中的十一个数字,然后你可以再用if来判断它是不是手机号码,但这样会稍微麻烦些

\\d{11}

  • 1

Reply