7

我正在寻找一个匹配荷兰电话号码的正则表达式。这些是格式要求:

  • 应该从 0 开始
  • 最多包含 1 个(可选)破折号“-”字符,现在它在哪里并不重要,只要它不是第一个字符
  • 总长度 10 或 11 个字符

到目前为止,这是我想出的:

^0+-{1}?([0-9]{10,11})$
4

8 回答 8

40

我以前在 http://regexlib.com/Search.aspx?k=phone%20number上看到过这个, 看看这个网站,希望它有帮助。

(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)

用于评估荷兰式电话号码的正则表达式。可能的示例前缀:+31、+31(0)、(+31)(0)、0、0031 后跟 9 个数字(可以包含空格或 -)。

于 2013-07-30T14:32:44.823 回答
8

我想出了这个创作

^(?:0|(?:\+|00) ?31 ?)(?:(?:[1-9] ?(?:[0-9] ?){8})|(?:6 ?-? ?[1-9] ?(?:[0-9] ?){7})|(?:[1,2,3,4,5,7,8,9]\d ?-? ?[1-9] ?(?:[0-9] ?){6})|(?:[1,2,3,4,5,7,8,9]\d{2} ?-? ?[1-9] ?(?:[0-9] ?){5}))$

于 2013-11-06T14:20:05.430 回答
6

试试这个正则表达式:^(?=^.{10,11}$)0\d*-?\d*$

于 2013-07-30T14:35:45.907 回答
4

这是荷兰手机号码的正则表达式,包括检查国际前缀(0031 或 +31)。检查它:https ://regex101.com/r/Y2DG19/1

^\(?([+]31|0031|0)-?6(\s?|-)([0-9]\s{0,3}){8}$

希望这可以帮助人们。

于 2017-11-21T16:16:56.730 回答
0

你也可以这样做。首先,您删除所有非数字,然后使用正则表达式检查数字。

const regex = /^((\+|00)?31|0(?!0))(\d{9})$/;
const valid = regex.test(input.replace(/\D/g, ''));

0031它适用于以, +31,开头的数字0

于 2019-04-03T14:20:49.517 回答
0

我试图通过对连字符或空格的使用添加更多限制来详细说明@Raj 的解决方案,因为它也以某种方式捕获了 06-01-2019。我还在那里发表了一些评论以提供示例:

\b(\+[0-9]{2}(?# e.g. +31)|^\+[0-9]{2}\(0\)|\(\+[0-9]{2}\)\(0\)(?# e.g. +31(0)|00[0-9]{2}(?# e.g. 0031)|0)([6][\-\s]?[1-9][0-9]{7}(?# e.g. 0612345678 or 06-12345678 or 06 12345678)|[6][\-\s]?[1-9][0-9]\s?[0-9]{2}\s?[0-9]{2}\s?[0-9]{2}(?# e.g. 06-12 34 56 78)|[6][\-\s]?[1-9][0-9]\s?[0-9]{3}\s?[0-9]{3}(?# e.g. 06-12 345 678)|[6][\-\s]?[1-9][0-9]{2}\s?[0-9]{3}\s?[0-9]{2}(?# e.g. 06-123 456 78)|[0-9]{2}[\-\s]?[1-9][0-9]{6}(?# e.g. 030-1234567)|[0-9]{2}[\-\s]?[1-9][0-9]{2}\s?[0-9]{2}\s?[0-9]{2}(?# e.g. 030-123 45 67)|[0-9]{2}[\-\s]?[1-9][0-9]\s?[0-9]{2}\s?[0-9]{3}(?# e.g. 030-12 34 567))\b

(我知道......而且我什至没有涵盖所有包含空格的案例)

于 2019-06-28T13:13:20.550 回答
0

这是我的解决方案:

extension String {
    func isValidPhone() -> Bool {
        let dutchRegex = "^(06[0-9]{8}|[+]{1}31[0]?[0-9]{9,10}|0031[0]?[0-9]{9,10})"
        let phonePredicate = NSPredicate(format:"SELF MATCHES %@", dutchRegex)
        return phonePredicate(with: self) 
    }
}

这将验证所有带有 +31、06、0031 的号码,因此仅适用于荷兰电话号码

于 2019-03-05T14:28:46.130 回答
-1

我为荷兰手机号码生成了以下号码。直到现在,我测试了一些可能性并且能够覆盖它们。我希望它有所帮助。

\(?(31\s*|0)-?6(\s*\)?|-?\s*)([0-9]\s{0,3}){8}
于 2017-09-18T13:31:22.417 回答