php中电话号码的正则表达式

Chi*_*ayu 1 php regex string zend-framework zend-validate

我正在对电话号码使用 Zend 表单验证。我想,用户应该输入以下格式的电话号码:

“+91-151-1234567”、“01234567891”、“+912345678901”

所以我使用这个正则表达式:

"^(?:\+?([0-9]{3})\)?[-. ]?\(?([0-9]{3})\)?[-. ]?([0-9]{10})[-. ]$"
Run Code Online (Sandbox Code Playgroud)

但它不起作用。它正在生成错误:

致命错误:未捕获的异常 'Zend_Validate_Exception' 带有消息 '内部错误匹配模式 '^(?:+?([0-9]{3}))?[-. ]?(?([0-9]{3}))?[-. ]?([0-9]{10})[-. ]$' 对 /var/www/html/allindiazend/library/Zend/Validate/Regex.php:117 中的值 '+91-151-3297154'' 堆栈跟踪:#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(Array)

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 在 /var/www/html/allindiazend/library/Zend/Validate/Regex.php 中的第 117 行

任何人都可以帮我做这个。

先感谢您。

Ale*_*Aza 5

此表达式将匹配您的所有 3 个示例:

\+?([0-9]{2})-?([0-9]{3})-?([0-9]{6,7})
Run Code Online (Sandbox Code Playgroud)