代码之家  ›  专栏  ›  技术社区  ›  mikepenz

控制电话号码的Regex

  •  1
  • mikepenz  · 技术社区  · 14 年前

    我刚接触Regex,只需要一个声明。

    我希望我的声明接受这些数字类型:

    06643823423可能更长 或0664 3843455 或+43664 4356999

    重要的是,这只是一个声明。

    有人能帮我吗?

    4 回复  |  直到 10 年前
        1
  •  0
  •   Maulik Vora    14 年前
    $regExp = '/^([+][4][3]|[0]){1}([0-9]{3})([ ]{0,1})([0-9]{7})$/';
    $number = "06643823423";
    
    if(!preg_match($regExp,trim($number)))
    {
            echo FALSE;
    }
    else
    {                
            echo TRUE;
    }
    
        2
  •  1
  •   Bobby Jack    14 年前

    怎么样:

    ^\+?[0-9 ]+$
    

    你可以将它与preg_匹配,例如

    $matches = preg_match("/^\+?[0-9 ]+$/", $telephone_number);
    
        3
  •  0
  •   Mike C    14 年前

    尝试 \+?\d+\s?\d+

    解释:
    \+? -加号(用\转义,因为“+”是regex中的特殊字符)。“?”表示前面字符的“0或1”,使其可选
    \d+ -\ d表示一个数字;加号表示一个或多个数字。
    \s? -\ s表示空白字符;是?使其可选
    d+ -\ d表示一个数字;加号表示一个或多个数字。

    因此,这应该匹配2个或更多个数字,在开始时有一个可选的+符号,中间有一个可选的空间。

        4
  •  0
  •   RobertPitt    14 年前

    在这里,我能想到的唯一的regex是:

    $phone_number = '+449287645367';
    var_dump(preg_match("/^[\+|0][0-9]{10,12}$/",str_replace(' ','',$phone_number)));