坑爹代码 | 要不然你说手机号码应该怎么验证嘛!

红薯
 红薯
发布于 2019年06月25日
收藏 10

在现如今的互联网应用中,手机号码已经完全取代电子邮件成为了用户注册账号的唯一标识。而随着移动网络的高速发展,各种前缀的手机号码不断推出,如何验证有效的手机号码就是程序员必须关注的功能点,你说重要吧? 好像没那么重要,你说不重要吧? 一旦程序出错,用户注册不了那就是大事!

所以你怎么看下面这段验证手机号码是否正确的代码呢?

public String validatePhone(String phoneStr) {
  if (phoneStr != null) {
	if (phoneStr.length() == 11) {
	  if (isNumeric(phoneStr)) {
		if (phoneStr.startsWith("130") || phoneStr.startsWith("131") || phoneStr.startsWith("132")
			|| phoneStr.startsWith("134") || phoneStr.startsWith("135") || phoneStr.startsWith("136")
			|| phoneStr.startsWith("137") || phoneStr.startsWith("138") || phoneStr.startsWith("139")
			|| phoneStr.startsWith("140") || phoneStr.startsWith("141") || phoneStr.startsWith("142")
			|| phoneStr.startsWith("144") || phoneStr.startsWith("145") || phoneStr.startsWith("146")
			|| phoneStr.startsWith("147") || phoneStr.startsWith("148") || phoneStr.startsWith("149")
			|| phoneStr.startsWith("150") || phoneStr.startsWith("151") || phoneStr.startsWith("152")
			|| phoneStr.startsWith("154") || phoneStr.startsWith("155") || phoneStr.startsWith("156")
			|| phoneStr.startsWith("157") || phoneStr.startsWith("158") || phoneStr.startsWith("159")
			|| phoneStr.startsWith("170") || phoneStr.startsWith("171") || phoneStr.startsWith("172")
			|| phoneStr.startsWith("174") || phoneStr.startsWith("175") || phoneStr.startsWith("176")
			|| phoneStr.startsWith("177") || phoneStr.startsWith("178") || phoneStr.startsWith("179")
			|| phoneStr.startsWith("180") || phoneStr.startsWith("181") || phoneStr.startsWith("182")
			|| phoneStr.startsWith("184") || phoneStr.startsWith("185") || phoneStr.startsWith("186")
			|| phoneStr.startsWith("187") || phoneStr.startsWith("188") || phoneStr.startsWith("189")) {
			return "手机号正确";
		  } else {
			return "手机号规则错误";
		  }
		} else {
		  return "手机号必须为数字";
		}
	} else {
		return "手机号长度必须为11位";
	}
  } else {
	return "手机号不能为空";
  }
}

逻辑好像没有问题,但是真的好啰嗦啊!!!

那么你有更好的方法吗?

请移步下面链接发表评论,领取奖品:

https://gitee.com/oschina/bullshit-codes/blob/master/java/PhoneRuleValidate.java

码云 6 周年,我们正在征集各种坑爹代码,很多奖品等你来拿

详细的参与方法请看  https://gitee.com/oschina/bullshit-codes

------ 分割线 ------

其他坑爹代码吐槽:

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:坑爹代码 | 要不然你说手机号码应该怎么验证嘛!
加载中

精彩评论

宇润
宇润
验证1开头的11位数字得了,反正有短信验证。。。
battlesteed
battlesteed
把开头3个字母放到hashset里面,看看用户输入的号码,前面3位在不在set里面,不在,就是非法的
壹城
壹城
为什么没有133开头的,难道我们133的就不能是手机用户吗,就不配拥有姓名吗?
贾一饼
我看过的牛逼写法,lua写的,其他同理。
FOO.isMobile = function( s_ )
  local n_ = tonumber(s_) or 0
  return (n_>13000000000 and n_<19999999999)
end
宇天
宇天
首先,这个代码缩进,我给0分.

最新评论(44

许雷神
许雷神
现在手机号验证真不好弄,一般都是判断1开头的11位数。但是,对于那种非大路货就不好使了。
兮若
兮若
来人啊:把写这个的贱人给老子开除了!!!
车篷草
车篷草
没手机号码的,怎么注册?在网上证明我是“我”怎么那么难?
殊麒
殊麒
看的头疼
yungsh
yungsh
手机号会回收利用的,长点心吧海燕
贾一饼
我看过的牛逼写法,lua写的,其他同理。
FOO.isMobile = function( s_ )
  local n_ = tonumber(s_) or 0
  return (n_>13000000000 and n_<19999999999)
end
代码cai
代码cai
@贾一饼 这个屌
h
heike07
我认为从数据库读字段比较好,比较灵活,如果有新增号码可以直接在数据库增加即可,或者国家直接规定好正则,这种有轮子的就不要造轮子了。我是这么认为的,有不同意见可以讨论下。
九阁网趣
九阁网趣
虚拟号段开放后,号段无限多,其实除了 10 11 12 开头,其余1开头总长度11位的数字即可
TGVvbmFyZA
TGVvbmFyZA
16x 19x的用户就不管吗?
910438219
910438219
0分
返回顶部
顶部