瑞士电话号码的RegEx


RegEx for swiss phone number

我需要一个RegEx来验证(使用Laravel,一个php框架)瑞士电话号码,该号码必须符合以下格式:

+41 11 111 11 11

"+41"部分必须完全是这样,而其余部分(11 111 11 11)可以是1到9之间的任何数字。

调用RegEx的函数如下所示:

    $regex = "thisIsWhereINeedYourHelp";
    if (preg_match($regex, $value)) {
               return true;
            } 
    return true;

谢谢你的帮助!

这是我使用的模式:

/('b(0041|0)|'B'+41)('s?'(0'))?('s)?[1-9]{2}('s)?[0-9]{3}('s)?[0-9]{2}('s)?[0-9]{2}'b/

它匹配以下所有内容:

+41 11 111 11 11
+41 (0) 11 111 11 11
+41111111111
+41(0)111111111
00411111111
0041 11 111 11 11
0041 (0) 11 111 11 11
011 111 11 11
0111111111

任何空格都可以省略,它检查单词和非单词的边界。

您可以执行以下操作:

('+41)'s('d{2})'s('d{3})'s('d{2})'s('d{2})

演示:http://regex101.com/r/hJ9oY0

这里有一个正则表达式,它可以很好地与瑞士电话号码配合使用:

^('+?)('d{2,4})('s?)('-?)(('(0'))?)('s?)('d{2})('s?)('-?)('d{3})('s?)('-?)('d{2})('s?)('-?)('d{2})

我首先清理字符串一点(这样可以避免无用的匹配):

// input string cleanup
$input = preg_replace('/[^0-9+'(')-]/', '', $input);

我匹配一个瑞士号码:

// swiss telephone validation +41 (0)xx xxx xxxx
if(preg_match('/^('+41|0041|0){1}('(0'))?[0-9]{9}$/',$input))
        $result = "match: CH";
else    $result = "no match";

这应该匹配所有瑞士格式,并且是相当可靠的

您可以使用Laravel Phone软件包进行验证、格式化和其他功能。

在你的情况下,你可以这样指定你的国家:

'phone' => 'required|phone:CH'

CH=瑞士(Confoederio Helvetica)