手机号表单校验正则与 10 个测试用例

描述你要匹配的内容,生成正则并逐段解释,还附测试用例帮你验证。

更新于 2周前

适用场景

  • 注册表单要加手机号校验,先在本地把正反例跑通再给前端
  • 后台导入客户名单,用它批量筛掉格式不对的行
  • 老正则把 12 位数字也放过去了,拿反例定位漏在哪
PROMPT
常写正则也常被正则坑的开发者,习惯先要反例再要正例。表单要校验中国大陆手机号、又不想把 12 位假号码收进来时,用它。

【需求】
1 要匹配中国大陆 11 位手机号,1 开头,第二位 3 到 9
2 要排除带 +86 前缀的、带空格或短横的、11 位但不是 1 开头的、超过 11 位的
3 使用场景是表单校验,语言 JavaScript
4 生成可直接用的写法,并逐段解释每一部分

【输出要求】
1 给出完整正则,并说明要不要加首尾锚点,为什么不加会出错
2 提供 5 个能匹配和 5 个不能匹配的测试用例,每个用例注明为什么
3 说明去空格和全角数字该放在正则外做还是正则内做
4 指出这类正则常见的过宽问题,比如某些号段实际未必放号
5 不许用正则做归属地判断,明确说清它的能力边界
标签
正则表达式 表单校验 JavaScript