Php 瑞士电话号码的正则表达式

Php 瑞士电话号码的正则表达式,php,regex,validation,laravel-4,phone-number,Php,Regex,Validation,Laravel 4,Phone Number,我需要一个正则表达式(使用Laravel,一个php框架)来验证瑞士电话号码,该号码必须符合以下格式: +4111111111 “+41”部分必须正好如此,而其余部分(11111)可以是1到9之间的任意数字 调用正则表达式的函数如下所示: $regex = "thisIsWhereINeedYourHelp"; if (preg_match($regex, $value)) { return true; } ret

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

+4111111111

“+41”部分必须正好如此,而其余部分(11111)可以是1到9之间的任意数字

调用正则表达式的函数如下所示:

    $regex = "thisIsWhereINeedYourHelp";

    if (preg_match($regex, $value)) {
               return true;
            } 
    return true;
谢谢你的帮助

您可以通过以下方式进行操作:

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


演示:

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

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

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

我不匹配瑞士号码:

// 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";
这应该匹配所有瑞士格式,并且相当可靠

您可以使用该软件包进行验证、格式化和更多功能

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

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

CH=瑞士(Confoederatio Helvetica)

这是我使用的模式:

/(\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 00 111 22 33
+410011123
的话,可以将每个
\s
更改为
\s?
的重复项。理想情况下,您希望能够接受以空格分隔/不以空格分隔的数字或连字符分隔的数字瑞士,我们从来不用连字符写电话号码,所以在这个正则表达式中,你可以省略所有的
(\-?)
,如果你只想将号码与国家前缀匹配,从0041或+41
/(\b(0041)\\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