求助正则表达式

2017-03-11 10:00:19 +08:00
 920678778
各位 V 友, 求一个能正确过滤 string 为合法号码的正则表达式, 包括常用 11 位手机号码, 紧急号码(110 等), 服务号码(95580 等), 400 开头的号码! 在线等!!!
2060 次点击
所在节点    问与答
5 条回复
Cbdy
2017-03-11 10:34:15 +08:00
不同语言、库用的正则是有点不同的,如果真的要求一个正则,应该告诉具体的使用场景。

正则实质很简单,与 dfa 是等价的,三十分钟足够掌握。。。
imn1
2017-03-11 10:49:29 +08:00
正则不能判断是否合法
920678778
2017-03-11 10:53:22 +08:00
@Cbdy 就是在键盘上输入一串数字(比如:*#+1234567890), 然后判断这个字符串是不是正常的电话号码.这样子.
^((13[0-9])|(14[5,7])|(15[^4,\D])|(17[6-8])|(18[0-9]))\d{8}$, 找了一个匹配十一位电话号码的表达式. 但是一些紧急号码,和一些服务号没有包含进去.
Rice
2017-03-11 11:30:47 +08:00
据我的经验,正则是没法完全判断是否合法的
srlp
2017-03-11 19:50:29 +08:00
老实说,这种事情,不用正则更方便。而且这本身就不是简单的任务。

如果不限制正则的话,可看 https://github.com/googlei18n/libphonenumber

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/346628

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX