我想添加一个正则表达式来检查电话号码是否包含相同的数字超过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。