【发布时间】:2019-06-09 04:57:28
【问题描述】:
我有一个电话号码正则表达式,格式必须为 nnn-nnn-nnnn 或 n-nnn-nnn-nnnn(n 表示号码)。
这个正则表达式是
^(1-)?\d{3}-\d{3}-\d{4}$
我需要防止电话号码全为 1、全为 2、全为 3 等。
如果有 10 个相同的字符,我有一个模式会通过,但我想要反过来,不能有 10 个相同的字符,我需要将它粘贴到负前瞻中,这样我就可以解耦以上模式来自电话号码模式,并说“将此应用于模式 x,无论 x 可能是什么模式,它都不能包含 10 个或更多字符”。
/(.)\1{10,}/
尝试的解决方案:
1.) 我将下面的模式嵌套在括号中,所以它都在第一个捕获组中
^(1-)?\d{3}-\d{3}-\d{4}$
2.) 将下面的模式插入到负前瞻中,括号从第一个模式中删除,因为我希望第一个捕获组位于负前瞻之外
.\1{10,}
我最终得到了什么:
(?!.\1{10,})(^(1-)?\d{3}-\d{3}-\d{4}$)
预期结果:111-111-1111 失败 实际:111-111-1111 通行证
【问题讨论】:
标签: javascript regex