Vincent

Results 33 comments of Vincent

验证真实运营商这个目前似乎是无解的,用正则是肯定搞不定了,因为没有规则。运营商好像也没有开放相关的接口,这个方向也走不通。 如果验证运营商是为了进行短信验证,我认为这个问题似乎并不需要我们考虑,保证到达是云通讯服务商要解决的问题。 如果你真的是必须要得到用户手机号码的真实运营商,目前估计只能是问用户了。 以我程序员的思维,我目前只想到了两种方案,都是需要和用户交互的。 1. 在需要发短信的界面都加一个选项,默认选中用户输入的号码匹配的运营商,然后允许用户来确认和更正他所属的运营商。 2. 在首次发送验证码后延迟若干时长(例如验证码发送成功 30 秒后用户都没有填写验证码)在界面下方加入一个按钮,标题假设为“没有收到短信?”,点击后执行一套逻辑(例如弹出一个确认框)来判断用户是否进行过携号转网,当前运营商是什么,重新发送短信。 这两种方案我个人倾向于第 2 种,目前携号转网率还是很低的,这种方案对用户是友好的,如果该用户没有进行携号转网的话,在正常的时间内验证了手机号,他不需要做任何额外的交互。对开发者来说只是有几率需要重新发送一次短信验证码,成本上浮一点。 ![image](https://user-images.githubusercontent.com/4084679/50880161-68b56600-1418-11e9-9de2-05514cfe2f3b.png)

我是想着这个问题没有解决,保持开着开放讨论。那也可以先关了,以后有需要可以重新打开。

刚刚发现阿里云最近推出了一个叫[号码百科](https://help.aliyun.com/document_detail/154760.html#title-8ui-mvu-o6o)的收费服务,支持查询携号转网的手机号码的运营商。因为工信部的那个携号转网数据库只开放给了包括腾讯、阿里在内的少数几个第三方公司,所以盲猜阿里的这个服务理论上肯定是准确的。 目前来说用正则验证手机号码是否合规还是可行的,但用正则判断手机号码运营商肯定是不推荐了。携号转网开放之后,除了工信部的携号转网数据库的 API 之外没有任何方案是精准的,正则也不例外,而且随着时间的推移,用正则判断的准确度会越来越低。

能具体说说你的场景吗,我之前有写一[部分](https://github.com/VSRegex),但目前没有继续,你需要 js 的是吗? 另外你可以看一下 [test](https://github.com/VincentSit/ChinaMobilePhoneNumberRegex/tree/test) 分支,里面有规则会更新。

格式: 0XX-XXX-XXXX 0XXX-XXX-XXXX 0XXX-XXXX-XXXX 要求可能符合格式(允许 0XX-XXXX-XXXX 这种无效号码): `^(?:\+?86)?0\d{2,3}-?\d{7,8}$` 要求必须符合格式: `^(?:\+?86)?0(?:\d{2,3}-?\d{7}|\d{3}-?\d{8})$` 要求必须符合格式,并且符合真实的号码规则(符合参考资料中的所有已放出号段,不包括废弃号段,严格匹配 7 位或者 8 位号码。): `^(?:\+?86)?0(?:(?:(?:(?:10|2[^6])|3(?:1[^1]|35|49|5\d|7[^1789]|9[^079])|4(?:1[^0134]|2[179]|3[^0-2]||5[^01]|6[4789]|7\d|8[23])|5(?:3[^12]|4[36]|5[^1]|6[12346]|7[280]|80|9[^015])|6(?:3[1235]|6[0238]|9[12])|7(?:01|(?:1|7)\d|2[248]|3[^123]|4[3-6]|5[^457]|6[02368]|9[^1])|8(?:1[23678]|2[567]|3\d|5[4-9]|7[^1]|8[3678]|9[1-7])|9(?:1[^08]|(?:3|7|9)\d|4[13]|5[1-5]|0[^0457]))-?\d{7})|(?:3(?:11|7[179])|4(?:[135]1|32)|5(?:1\d|2[37]|3[12]|51|7[^028]|9[15])|7(?:31|5[457]|69|91)|8(?:[57]1|98))-?\d{8})$` 7 位号段 010 020 021 022 023 024 025 027 028 029 0312 0313...

@ultravires 这种固定的直接字符串匹配就好了吧... 正则的话类似 `11[09]`?

@johnking I'm afraid so. I think this PR can not be merged because there are still many problems with the translation. It looks like machine translation, the statement doesn‘t read...

I also have this bug and I found my reason. My controller hierarchy like below: ``` - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIViewController1 *viewController1 = [[UIViewController1 alloc] initWithNibName:nil bundle:nil]; UIViewController2...

Thank you for your attention. I need to point out that the owner of all files in the `etc` directory is `emqx:emqx`, the permissions of the directory where the host...

@zhanghongtong Thank you for your response, here is the configuration. ![06D676E8877E92C04A2A794442C3BA3E](https://user-images.githubusercontent.com/4084679/62676132-48fd1500-b9dc-11e9-91c6-1e5ad9ea9fc0.jpg) ![970EF3394B824D1A63558EB802E5553E](https://user-images.githubusercontent.com/4084679/62676133-4995ab80-b9dc-11e9-9bfc-3a57d317586f.jpg)