// 验证手机号
var verifyTel = function(tel) {
if(tel.match(/^((13[0-9])|(14[4,7])|(15[^4,\D])|(17[6-8])|(18[0-9]))(\d{8})$/)) {
return true;
} else
return false;
}
这部分不太懂什么意思:
**
**
// 验证手机号
var verifyTel = function(tel) {
if(tel.match(/^((13[0-9])|(14[4,7])|(15[^4,\D])|(17[6-8])|(18[0-9]))(\d{8})$/)) {
return true;
} else
return false;
}
这部分不太懂什么意思:
**
**
我觉得上面的两个答案有点不严谨呢?
/14[4,7]/.test("144") //true
/14[4,7]/.test("147") //true
/14[4,7]/.test("14,") //true
不懂在[]
可选字符组(集)里用了逗号,总觉得这里应该是[4-7]
的意图(我猜的
第二个是15[^4,D]
在[]
取的反义,即不能是4
, ,
和\D
(不是数字的情况),
概况起来就是说在15
后要匹配到的为 不能 不是数字,不能是逗号,不是4,
就是从0-9中排除4,我觉得15[^4,\D]
和15[^4\D]
效果是一样的。
这是我写的手机号校验正则,应该是把目前有的手机号都囊括了,话说没有144的号段...
var phoneRegExp = /^(13\d|14[57]|15[^4\D]|17[0135-8]|18\d)\d{8}$/;
手机号:(移动-电信-联通)
var tel = $("#PhoneNumber").val();//获取输入的手机号
var yidongreg = /^(134[012345678]\d{7}|1[34578][012356789]\d{8})$/;
var dianxinreg = /^1[3578][01379]\d{8}$/;
var liantongreg = /^1[34578][01256]\d{8}$/;
//var reg = /^1[3|4|5|7|8]\d{9}$/;//这一种也可以
if (yidongreg.test(tel) || dianxinreg.test(tel) || liantongreg.test(tel)){
}
(14[4, 7]) :以"144"或"147"两个范围匹配字符,中括号表示为取值范围;
(15[ ^4, D]) : 以"154"或"15"+紧接以非数字字符开头两个范围匹配字符,^表示作为开头标识
。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
把多余逗号去掉!
(14[47])|(15[^4\D])
(15[^4\D])
[^4\D] 这个写法,\D表示
非数字
,[^
\D]表示非非数字
,等价于[\d]等价写法:
(15[0-35-9])
chrome console 测试:
经测,
[^4\D]
、[^\D4]
和[0-35-9]
,这3种写法是等价的。[^4\D]
会把 [^
\D] 当作 [\d] 展开,然后把 4 从中剔除;最后变成[0-35-9]
。