阻止包含相同数字连续超过4次的电话号码的正则表达式


Regex to block a phone number that contains same digit more than 4 times successively?

我想添加一个正则表达式来检查电话号码是否包含相同的数字超过n次。这是我尝试过的:

  ^0[1-9]([-. ]?[0-9]{2}){4}$

我怎样才能做到呢?谢谢。

您只需要检查任何重复的字符n次或更多。首先,我们需要确定要捕获哪些字符。其次,我们需要使用反斜杠+ n从捕获组中获取单个字符。最后,我们需要说明它应该重复多少次。在这种情况下,我认为它不需要验证整个数字,只需要验证存在相同重复字符的事实。因此,为了捕获任何重复4次或以上的数字,我们可以这样做:

'06000000000'.test(/([0-9])'1{3,}/); // return true
'12344445678'.test(/([0-9])'1{3,}/); // return true
'01234567890'.test(/([0-9])'1{3,}/); // return false

([0-9])这就是我们要检查的,在这个例子中,0到9之间的任意数

'1从第一个捕获组获取值

{3,}检查此值是否重复3次或更多次,因为我们已经在捕获组中匹配了第一个字符。3 + 1 = 4自然。

你可以选择

^'d*('d)'1{3}'d*$

这些数字可以被丢弃,参见 regex101.com上的演示

你可以试试这个模式:

('d)'1{3,}

('d)表示数字数

('d)'1匹配带编号的子表达式

的数字

('d)'1{2,}匹配数字1+2及以上的次数。

('d)'1{3,}匹配数字1+3及以上的次数。

('d)'1{3}恰好匹配1+3次

'1已经计数1。这就是为什么'1{3}等于1+3。