javascript - js 正则验证手机号,有点疑问?

查看:89
本文介绍了javascript - js 正则验证手机号,有点疑问?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

  // 验证手机号
    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[47])|(15[^4\D])


(15[^4\D])
[^4\D] 这个写法,\D表示 非数字,[^\D]表示 非非数字,等价于[\d]

等价写法:(15[0-35-9])


chrome console 测试:

s='153,154,155,15a,15,'
"153,154,155,15a,15,"
ptn1=/15[^4\D]/g;
/15[^4\D]/g
s.match(ptn1)
["153", "155"]
ptn2=/15[^\D4]/g;
/15[^\D4]/g
s.match(ptn2)
["153", "155"]
ptn3=/15[0-35-9]/g;
/15[0-35-9]/g
s.match(ptn3)
["153", "155"]

经测,[^4\D][^\D4][0-35-9],这3种写法是等价的。
[^4\D]会把 [^\D] 当作 [\d] 展开,然后把 4 从中剔除;最后变成[0-35-9]

这篇关于javascript - js 正则验证手机号,有点疑问?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆