Regex International Phone 数字允许空格

Regex International Phone numbers allowing white spaces

我正在尝试使用正则表达式来验证国际 phone 号码。

这是我目前所拥有的:

 ^\+?( |\(|\))*?\d{8,14}$

我的目标是允许的总位数是 8-14。此外,在数字之间、之后或之前允许尽可能多的空格和破折号。

示例:

12345678901234
123    456789  0 1 2 3 4
+1       2345678901234
(12)  3   4   56  7  8   9 01234
1-2-3-4-5-6-7 8 9 0 123     4 

我不知道该怎么做。

谢谢。

下面的正则表达式会对你有所帮助。

^(?=(?:\D*\d\D*){8,14}$)[ -]*\+?[ -]*(?:\((?:[ -]*\d)+[ -]*\))?[- \d]*

DEMO

^(?=(?:\D*\d\D*){8,14}$)[- \d()+]*

DEMO

\D 匹配任何非数字字符。 (?=(?:\D*\d\D*){8,14}$) 断言我们要匹配的字符串必须包含 8 到 14 位数字。