1

我是正则表达式的新手,我只需要一个语句。

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

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

重要的是,这些只是一种说法。

谁能帮我?

4

4 回答 4

1

怎么样:

^\+?[0-9 ]+$

您可以将其与 preg_match 一起使用,例如

$matches = preg_match("/^\+?[0-9 ]+$/", $telephone_number);
于 2010-08-23T11:33:34.340 回答
0

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

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

所以这应该匹配 2 个或更多数字,开头有一个可选的 + 符号,中间的某个地方有一个可选的空格。

于 2010-08-23T12:16:05.437 回答
0
$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;
}
于 2010-08-23T11:36:24.890 回答
0

从你那里,我能想出的唯一正则表达式是:

$phone_number = '+449287645367';
var_dump(preg_match("/^[\+|0][0-9]{10,12}$/",str_replace(' ','',$phone_number)));
于 2010-08-23T11:37:09.380 回答