用PHP验证国际电话号码

时间:2011-07-20 14:21:26

标签: php regex forms validation

我一直在寻找能够为我找到一个正则表达式的正则表达式,所有我发现的要么需要破折号或限制其他我不需要的东西。

喜欢这个:     ^(([0-9] {3})?)[? - 。 ]([0-9] {3})[? - 。 ]([0-9] {4})$

基本上我想允许这些类型的电话号码输入,这些都是有效的:

+000 111111111

00011111111111

0022 111111111111

0022111111111

+ 333-4444-5555-6666

000-7878787-0000-4587

请注意,位数不受限制,我只希望验证过滤掉空输入和字母。还会过滤掉除最多4个破折号以外的所有其他字符。 4个空格和一个可选的单加号。

这可以通过preg_match吗?

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

当然可能。但我认为使用不理解的东西是危险的。我会做这样的事情

^(?!(?:\d*-){5,})(?!(?:\d* ){5,})\+?[\d- ]+$

here on Regexr

最后一部分\+?[\d- ]+允许使用可选的+,后跟至少一个数字,短划线或空格

负向前瞻确保不超过4个短划线或空格。

限制:
- 仪表板或空格可以在一行中 - 它还接受-作为有效

在Regexr链接上自己尝试一下,你可以添加你想要的例子。

答案 1 :(得分:1)

删除想要的字符(“”,“ - ”),如果count< = 4(对于“+”字符= = 1),则计算金额,然后查询if语句。所以总的来说就是

if(countSpace< = 4&& countDash< = 4&& countPlus == 1){ ... }

至于为空,只需使用标准表格验证来检查输入是否已填写。