我正在使用php并从我的国家电话号码中搜索正确的regex。我不太擅长regex,但我对我的国家电话号码的可能模式做了一些研究,这些是:
请帮我拯救我的一天!
发布于 2013-12-27 11:22:26
假设您删除了所有空格(可能还有其他无效字符):
((\+|00)216)?[0-9]{8}
这个正则表达式应该匹配所有提供的示例。
更新:
这是“完全”准则。它是基于维基百科的一篇文章的
((\+|00)216)?(74|71|78|70|72|9|4|2|5|73|75|76|77|79)[0-9]{6}
我不知道的是如何处理个位数区号,也许下面的正则表达式更好:
((\+|00)216)?(74|71|78|70|72|09|04|02|05|73|75|76|77|79)[0-9]{6}
更新2:
最后的解决方案,这次是基于另一份文件的
((\+|00)216)?([2579][0-9]{7}|(3[012]|4[01]|8[0128])[0-9]{6}|42[16][0-9]{5})
发布于 2013-12-27 11:21:23
您可以使用:
if(preg_match(((\+|00)216)?[0-9]{8})) {
// do something
}
或尝试如下:
if (!preg_match('/^\+\d+$/', $phone))
fail("Invalid phone number");
发布于 2013-12-27 11:29:58
电话号码的一般规则很容易忽略空格和破折号。之后,您可以计数最小和最大的数字数和可选的加号。
$filteredPhone = preg_replace('/[^\+\d]/', '', $phone);
$phoneFormatOk = preg_match('/^(\+?0*216)?\d{8}$/', $filteredPhone);
https://stackoverflow.com/questions/20799750
复制相似问题