用于波斯电话号码的C#regex的php等价物

用于波斯电话号码的C#regex的php等价物,c#,php,regex,preg-match,cakephp-2.3,C#,Php,Regex,Preg Match,Cakephp 2.3,php中此C#正则表达式的等效正则表达式是什么: (0|\+98)?([ ]|-|[()]){0,2}9[1|2|3|4]([ ]|-|[()]){0,2}(?:[0-9]([ ]|-|[()]){0,2}){8} 这是从 以下是我在CakePHP验证规则中的代码片段: function isValidPhoneFormat($phone) { $phone_no = $phone['phone_number']; $reg_expression='(0|\+98)?(

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

(0|\+98)?([ ]|-|[()]){0,2}9[1|2|3|4]([ ]|-|[()]){0,2}(?:[0-9]([ ]|-|[()]){0,2}){8}
这是从
以下是我在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;
}

你的正则表达式对我有用

<?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;
    }
?>

它看起来已经独立于平台/可移植。。。你试过运行它吗?我不知道它的等价物是什么?在phpc中,regex将在php.nope中工作!导致错误:
preg|u match():未知修饰符“?”
@VSB用
/
或其他东西围绕它-它需要能够将修饰符从匹配代码中分离出来:
/(0 |\+98)?([]-[124;[()]){0,2}9[1 | 2 | 3 | 4]([]-[124;[()]){0,2]([0-9]([]-[1240]){8}<代码>?
在PHP中是等效的,它只是认为代码在第一个
之后结束,因为您从一个开头开始
,这意味着它将把
作为一个所谓的修饰符来计算。这些~是用来做什么的?不幸的是,我对正则表达式没有太多的了解!@VSB
~
是一个PHP正则表达式分隔符。PHP中有很多正则表达式分隔符。
+98 91 1 1 1 1 1 1 1 1