我正在使用zend表单验证电话号码。我希望,用户应该输入以下格式的电话号码:
“+ 91-151-1234567”,“01234567891”, “912345678901”
所以我正在使用这个正则表达式:
"^(?:\+?([0-9]{3})\)?[-. ]?\(?([0-9]{3})\)?[-. ]?([0-9]{10})[-. ]$"
但它不起作用。 它产生错误:
致命错误:未捕获的异常 带有消息的'Zend_Validate_Exception' '内部错误匹配模式 “^:[ - (+([0-9] {3})???)。 ](([0-9] {3})?)[?? - 。 ]([0-9] {10})[? - 。 ] $'反对价值'+ 91-151-3297154'' 在 /var/www/html/allindiazend/library/Zend/Validate/Regex.php:117 堆栈跟踪:#0 /var/www/html/allindiazend/library/Zend/Validate.php(98): Zend_Validate_Regex->的isValid( '+ 91-151-3297154')
1 /var/www/html/allindiazend/library/Zend/Validate.php(98):
Zend_Validate->的isValid( '+ 91-151-3297154')
2 /var/www/html/allindiazend/library/Zend/Filter/Input.php(932):
Zend_Validate->的isValid( '+ 91-151-3297154')
3 /var/www/html/allindiazend/library/Zend/Filter/Input.php(800):
Zend_Filter_Input-> _validateRule(阵列)
4 /var/www/html/allindiazend/library/Zend/Filter/Input.php(688):
Zend_Filter_Input-> _validate()#5 /var/www/html/allindiazend/library/Zend/Filter/Input.php(430): Zend_Filter_Input-> _process()#6 /var/www/html/allindiazend/application/controllers/StaticController.php(148): Zend_Filter_Input-> isValid()#7 / var / www / html / allindi in /var/www/html/allindiazend/library/Zend/Validate/Regex.php 在第117行
任何人都可以帮助我做到这一点。
提前谢谢你。
答案 0 :(得分:4)
此表达式将匹配您的所有3个示例:
\+?([0-9]{2})-?([0-9]{3})-?([0-9]{6,7})
答案 1 :(得分:3)
不确定你的哪一部分不匹配,但我刚刚测试了我编写的替代版本,它似乎适用于所有示例:
^(\+\d{12}|\d{11}|\+\d{2}-\d{3}-\d{7})$
答案 2 :(得分:2)
我不允许对所有允许的格式进行大量检查,而是允许任何格式。您可以将其转换为单一格式(没有破折号和括号)进行所需的所有检查,并以相同的方式存储每个电话号码,以便您也可以轻松检索它。
如果您以这种方式解决问题,您的界面更加用户友好,可以更轻松地添加额外的检查,并且您存储的电话号码可以更好地用于其他应用程序。
答案 3 :(得分:0)
我应该创建一个PHP脚本来提取页面上列出的所有电话号码......
这些数字可能用不同的格式写成,例如: 0039024343333 39024343333 (0041)91 999 11 11 +41(0)91 999 11 11 0919991111 091 99 911 11 +1 123 344 2244 5 123-344-2244-5 等。
我尝试过这个脚本,但它只能部分工作:
GetPhoneNumber function ($ txt) {
$ regexp = '/ ([+ \ \ s]) {1,3} ([0-9 \ \ s] {2,5}) -? ([0-9 \ \ s] {2,5}) -? ([0-9 \ \ s] {2,20}) / ';
preg_match_all ($ regexp, $ txt, $ m);
return isset ($ m [0])? $ m [0]: array ();
}
$ fulltxt = file_get_contents ('http://wiki.wikimedia.it/wiki/Contatti');
$ phonenumber = GetPhoneNumber ($ fulltxt);
print_r ($ phonenumber);