我目前正忙于荷兰电话号码验证,该验证仅允许以下模式:
注意:n代表数字。
nn-123 nn-12345678 nnn-1234567 nnnn-1234 nnnn-123456 nnnn-1234567
注意:也可以使用空格代替破折号。
问题是我的正则表达式也允许使用非空格,但是它只能允许使用破折号或空格。
到目前为止,这是我的正则表达式代码:
/^([0-9]{3}[- ]?([0-9]{3}|[0-9]{7})|[0-9]{2}[- ]?([0-9]{3}|[0-9]{8})|[0-9]{4}[- ]?([0-9]{4}|[0-9]{6}|[0-9]{7})|[0-9]{3}[- ]?([0-9]{7}))$
编辑:为澄清起见,这是我的问题的一个示例:
允许的一些电话号码示例:
06-12345678
0800 1234
425-1234567
不允许的电话号码示例:
1234567890 (My regex sadly allows this number)
答案 0 :(得分:1)
像这样吗?
\d{2,4}[-, \s]\d{3,}
不太确定您的要求是什么,但这可以通过以下方式进行:
如果这对您不起作用,请提供您所需的所有特定限制/要求。
修改,regex101:
https://regex101.com/r/uVwAK1/1
我用数字1替换了“ n”个字符。
答案 1 :(得分:1)
要匹配这些格式,您可以使用替换|
和字符类[- ]
,但不要使其成为可选。
部分
^(?:[0-9]{2}[- ](?:[0-9]{8}|[0-9]{3})|[0-9]{3}[ -][0-9]{7}|[0-9]{4}[ -](?:[0-9]{6,7}|[0-9]{4}))$
^
字符串的开头(?:
非捕获组
[0-9]{2}[- ]
匹配2位数字和空格或连字符(?:
非捕获组
[0-9]{8}
匹配8位数字|
或[0-9]{3}
匹配3位数字)
关闭群组|
或[0-9]{3}[ -][0-9]{7}
匹配3位数字,空格或连字符和7位数字|
或[0-9]{4}[ -]
匹配4位数字和空格或连字符(?:
[0-9]{6,7}
匹配6-7位数字|
或[0-9]{4}
匹配4位数字)
关闭群组)
关闭群组$
字符串结尾