如何使用正则表达式检查不应包含重复数字的手机号码

Posted

技术标签:

【中文标题】如何使用正则表达式检查不应包含重复数字的手机号码【英文标题】:How to check a mobile number that shouldn't have duplicated digits with Regex 【发布时间】:2019-04-14 08:39:31 【问题描述】:

我想检查一个手机号码是否有 11 位数字,从零开始,第三位数字可能是 0,1,2,39,仅像 09123456789。我为此使用了^(09)([01239])\d8$ 这个模式,我还想检查第 4 到第 11 位数字是否像 09123333333090311111111 那样完全重复。

我使用这个正则表达式模式:^(09)([01239])(?!\28,)\d8$ 来实现这个目的,但不幸的是它不起作用。

请注意,我必须完全使用一种正则表达式模式。

谁能帮帮我?

【问题讨论】:

可能是^09[01239](\d)(?!\17)\d7$ (demo)?或^09[01239](\d)(?!\1+$)\d7$ 感谢 Wiktor,但像 09327777777 这样的数字也匹配。如果有可能出现不匹配的数字,那就太好了。 也许^09[01239]\d(\d)(?!\16)\d6$ @WiktorStribiżew 非常感谢。它工作正常。 【参考方案1】:

你可以使用

^09[01239]\d(\d)(?!\16)\d6$

匹配

^ - 字符串开头 09 - 09 子字符串 [01239] - 集合中的一个数字 \d - 一个数字 (\d) - 第 1 组:一个数字 (?!\16) - 不允许与第 1 组捕获的数字相同 \d6 - 六位数 $ - 字符串结束。

【讨论】:

以上是关于如何使用正则表达式检查不应包含重复数字的手机号码的主要内容,如果未能解决你的问题,请参考以下文章

10 位或 6 位数字的正则表达式不应以“/”开头和结尾,也可以是字符串中的单个单词 [重复]

用于检查字符串是不是不应包含某些单词的正则表达式,但如果这些单词前面有“to”或“for”,则这些单词是可以的

正则表达式检查重复

如何使用正则表达式进行电子邮件控制和自定义域控制?

SSN和电话号码的正则表达式[关闭]

C# 中的正则表达式无法正常工作以进行数字检查 [重复]