php相当于C#regex的波斯语电话号码

时间:2014-08-23 13:19:55

标签: c# php regex preg-match cakephp-2.3

php中这个C#Regex表达式的等效正则表达式是什么:

(0|\+98)?([ ]|-|[()]){0,2}9[1|2|3|4]([ ]|-|[()]){0,2}(?:[0-9]([ ]|-|[()]){0,2}){8}

这是来自https://stackoverflow.com/a/18618958/1080355的波斯手机号码的常规快递 这是我在CakePHP验证规则中的代码片段:

    function isValidPhoneFormat($phone) {
    $phone_no = $phone['phone_number'];
    $reg_expression='(0|\+98)?([ ]|-|[()]){0,2}9[1|2|3|4]([ ]|-|[()]){0,2}(?:[0-9]([ ]|-|[()]){0,2}){8}';
    $errors = array();
    if (empty($phone_no)) {
        $errors [] = "شماره وارد شده معتبر نمی باشد";
    //

    } else if (!preg_match($reg_expression, $phone_no)) {
        $errors [] = "شماره وارد شده معتبر نمی باشد";
    }

    if (!empty($errors))
        return implode("\n", $errors);

    return true;
}

1 个答案:

答案 0 :(得分:2)

你的正则表达式对我有用,

<?php
$mystring = "foo +98 91 1 1 1 1 1 1 1 1 ";
$regex = '~(0|\+98)?([ ]|-|[()]){0,2}9[1|2|3|4]([ ]|-|[()]){0,2}(?:[0-9]([ ]|-|[()]){0,2}){8}~';
if (preg_match($regex, $mystring, $m)) {
    $yourmatch = $m[0]; 
    echo $yourmatch;
    }
?>

<强>输出:

+98 91 1 1 1 1 1 1 1 1