我写的电话号码判断程序。
其中有一些bug。
1.验证输入的是否为纯字符那里出错,无论输入什么字符只要位数够了都能通过。
2.我本意是,7位和8位的普通座机号码的第一位不能够是0或1,但是程序测试结果是输入什么都可以只要位数够就行了。事实证明后面的每一个判断,只要输入的位数够了,无论输入什么都会弹出正确的弹出框。
3.当我输入的位数不够的时候,点击提交,没有任何反应。




我想知道代码到底哪里出错了,我看了很久都没弄明白。刚学正则表达式,实在有些模糊,请大家赐教。如果我描述得不够清楚请大家留言。谢谢!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Phone Number Test</title>
<script type="text/javascript">
function checkPhoneNumber(){
// 输入电话号码
var phoneNumber = document.getElementById("number").value;
// 判断所输入的电话号码是否全是数字字符
if (/(^[0-9]\d{3}$)|(^[0-9]\d{5}$)|(^[0-9]\d{7}$)|(^[0-9]\d{8}$)|(^[0-9]\d{11}$)/.test(phoneNumber)){
// 求电话号码串的长度
if ( phoneNumber.length == 3) {// 电话号码长度为3位的情况
if (phoneNumber == 110 || phoneNumber == 112 || phoneNumber == 119 || phoneNumber == 120 || phoneNumber == 122 || phoneNumber == 114) {// 确定是否为3位紧急号码 ^1[1|2][0|4|9|0]
/* *******验证是否位以下紧急号码*******
火警 119 急救 120 交警 122 公安 110 号码查询 114
*/
alert("该电话号码为紧急号码!!!");
}else {
alert("你输入的电话号码为空号!!!");
}
}else if (phoneNumber.length == 5) {// 电话号码长度为4位的情况
/* *******验证是否位以下服务号码*******
公众服务号码:
全国铁道客服中心 12306
全国通信机构服务号码:
中国网通服务电话 10060 中国联通服务电话/中国联通客服 10010 中国铁通服务号码 10050 中国电信服务号码 10000
全国国家机构监督、投诉、抢修、举报电话:
消费维权投诉电话 12315 物价举报投诉电话 12358 地税纳税服务热线 12366 劳动和社会保障局 12333 公共卫生环境投诉 12320 全国法律服务热线 12348 环保局监督电话 12369 供电抢修服务电话 95598
全国保险公司服务电话号码:
中国人寿保险 95519 太平洋保险 95500 平安保险 95511 太平人寿保险 95589 中国人保保险 95518 天安保险 95505 大众保险 95507 华泰财险 95509 中华联合保险 95585 华安财险 95556 中国大地保险 95590
全国银行客户服务电话:
中国银行服务电话 95566 工商银行服务电话 95588 建设银行服务电话 95533 农业银行服务电话 95599 交通银行服务电话 95559 光大银行服务电话 95595 邮政储蓄服务电话 95580 民生银行服务电话 95568
中国银联 95516 广东发展银行服务电话 95508 深圳发展银行服务电话 95501 上海浦东发展银行电话 95528
*/
if ( /(^100(86|10|00|50|60))|(^123(15|06|58|66|33|20|48|69))|(^955(19|00|89|18|05|07|09|85|56|90|66|88|33|99|59|95|80|68|16|08|01|28|98))/.test(phoneNumber)) {// 验证是否为公众服务号码
alert("该电话号码为公众服务号码!!!");
}else {
alert("你输入的电话号码为空号!!!")
}
}else if (phoneNumber.length == 7) {// 电话号码长度为7位的情况
/* *******验证是否为普通七位座机号码*******
普通座机号码不能用数字0开头
*/
if (/^[2-9][0-9]\d{6}$/.test(phoneNumber)) {// 确定是是否为合法7位座机号码
alert("该电话号码为普通七位座机号码!!!");
}else {
alert("你输入的号码为空号!!!");
}
}else if (phoneNumber.length == 8) {// 电话号码长度为8位的情况
/* *******验证是否为普通八位座机号码*******
普通座机号码不能用数字0开头
*/
if (/^[2-9][0-9]\d{7}$/.test(phoneNumber)) {// 确定是否为合法8位座机号码
alert("该电话号码为普通八位电话号码!!!");
}else {
alert("你输入的号码为空号!!!");
}
}else if (phoneNumber.length == 11) {// 电话号码长度为11位的情况
/* *******验证是否为普通手机号码 && 验证是否为带区号的座机号码*******
电信:
中国电信手机号码开头数字
2G/3G号段(CDMA2000网络)133、153、180、181、189
4G号段 177
联通:
中国联通手机号码开头数字
2G号段(GSM网络)130、131、132、155、156
3G上网卡145
3G号段(WCDMA网络)185、186
4G号段 176、185[1]
移动
中国移动手机号码开头数字
2G号段(GSM网络)有134x(0-8)、135、136、137、138、139、150、151、152、158、159、182、183、184
3G号段(TD-SCDMA网络)有157、187、188
3G上网卡 147
4G号段 178
*/
if (/^(13[0-9]|15(0|3|5|6|7|8|9)|14(5|7)|17(6|7|8)|18(0|1|2|3|4|5|7|8|9))\d{8}$/.test(phoneNumber)) {// 普通手机号码验证
alert("该电话号码为普通手机号码!!!");
}else if (/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/) {
alert("该电话号码为带区号的座机号码!!!");
}
}else {
alert("该号码为空号!!!");
}
}else {
alert("请输入正确的电话号码长度!!!");// 输入的号码长度不正确,报错弹出
}
}
</script>
</head>
<body>
<h3>请输入需要判断的电话号码</h3>
<input type="text" id= 'number' />
<input type="button" name="name" value="submit" onclick="checkPhoneNumber()"/>
</body>
</html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
[0-9]与\d是等同的,判断字符串时去掉^[0-9]或\d.