
[求]手机号码和固话号码正则表达式
要求是,输入正确手机或固话都能通过验证支持长途,手机号码前可加0。固话可带区号现在是这样写的手机部分:^0?1[358]\d{9}$固话部分:^(0(10|2[1-3]|...
要求是,输入正确手机或固话都能通过验证
支持长途,手机号码前可加0。固话可带区号
现在是这样写的
手机部分:^0?1[358]\d{9}$
固话部分:^(0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7}$
然后用或符号“|”连接起来
^(0?1[358]\d{9})|((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7})$
用错误的号码测试 123456789012
单独用手机部分测试,得到号码非法
单独用固话部分测试,得到号码非法
但是用连接起来的表达式测试,居然能通过
为什么 ???
解释此现象给100分
再求一能解决此问题的正则,再追加100分 展开
支持长途,手机号码前可加0。固话可带区号
现在是这样写的
手机部分:^0?1[358]\d{9}$
固话部分:^(0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7}$
然后用或符号“|”连接起来
^(0?1[358]\d{9})|((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7})$
用错误的号码测试 123456789012
单独用手机部分测试,得到号码非法
单独用固话部分测试,得到号码非法
但是用连接起来的表达式测试,居然能通过
为什么 ???
解释此现象给100分
再求一能解决此问题的正则,再追加100分 展开
4个回答
展开全部
明白楼主的意思了,单独使用手机部分和固话部分的正则,得到号码非法,也就是说正则判断正确!
使用连接起来的表达式,号码通过。原因:"|"连接符;由于此连接符优先级最低,所以它将连接后的表达式分为两个部分
^(0?1[358]\d{9}) 和 ((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7})$
导致了连接后的表达表达意思错误,解决方法有两种:
^(0?1[358]\d{9})$|^((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7})$
或者
^((0?1[358]\d{9})|((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7}))$
也就是在^和$中间加一对括号。
================
还有不明白的,可以发Hi消息。
使用连接起来的表达式,号码通过。原因:"|"连接符;由于此连接符优先级最低,所以它将连接后的表达式分为两个部分
^(0?1[358]\d{9}) 和 ((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7})$
导致了连接后的表达表达意思错误,解决方法有两种:
^(0?1[358]\d{9})$|^((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7})$
或者
^((0?1[358]\d{9})|((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7}))$
也就是在^和$中间加一对括号。
================
还有不明白的,可以发Hi消息。
展开全部
^(0?1[358]\d{9})|^((0(10|2[1-3]|[3-9]\d{2}))?[1-9]\d{6,7})$
他是迭代匹配的。
他是迭代匹配的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
8383463回答的有道理,学习了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是什么来的,看不懂,帮你顶上去....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询