正则表达式允许空格(对于电话号码正则表达式)

时间:2011-05-17 09:03:36

标签: php regex phone-number

我有这个正则表达式:

preg_match("#^([0-9]+)$#", $post['telephone'])

谁只允许数字(对于法语类型的电话号码,所以0123456789),但我想允许空格。例如,允许这种类型的字符串:“01 23 45 67 89”。

你能帮帮我吗?

4 个答案:

答案 0 :(得分:3)

如果在字符串中的任何位置都有空格,那么它很简单,只需将其添加到字符类

preg_match("#^([0-9 ]+)$#", $post['telephone'])

但这将在开头允许5个空格。

^\d{2}(?: ?\d+)*$

会更复杂一些。以两位数字开头,然后是一个可选组,以可选空格开头,后跟至少1位数。这个组可以重复0次或更多次。

这将匹配

  

01 23 45 67 89

     

0123456789

     

01234 5679

答案 1 :(得分:2)

如果您想拥有8位数字,例如但仍然允许任意数量的空白字符,则以下内容非常棒:

^(?:\s*\d){8}$

或者,如果你也想允许破折号:

^(?:\s*-*\s*\d){8}$

答案 2 :(得分:1)

除了数字,空格和破折号之外,这个除了它。

$input = '0123?> Abc -_#';
$output = preg_replace('#[^0-9- ]#', '', strtolower($input));
echo($output);

您是否只想验证(匹配和中止)或清理,尝试清理并继续进行?

答案 3 :(得分:-2)

这个怎么样?

preg_match("/^\d(\s*\d)*$/", $post['telephone'])