考一个匹配手机号的正则

  • 2018-06-05
  • 146

要求:
* 以’86-‘开头时,后面必须是1开头的十一位数字
* 以’其它数字-‘开头时,后面必须是6位以上数字
* 纯数字的手机,必须是1开头的十一位的纯数字

比如:
* 86-12345678901 【合法】
* 86-23456789012 【不合法】
* 86-123456 【不合法】
* 186-123456 【合法】
* 186-12345 【不合法】
* 123456 【不合法】
* 12345678901 【合法】
* 23456789012 【不合法】

其实,主要的难点在于,86与186的区分,’86-‘后面是有’1开头的十一位数字’约束的,而’186-‘则要求是6位以上数字就好了。这种情况用正向否定断言很好解决:


/(^(?!86-)\d+-\d{6,}$)|(^((86-)?1\d{10})$)/