RegEx-Tel Number允许输入垃圾邮件破折号

时间:2014-12-04 10:47:21

标签: php regex

我不知道为什么它允许输入多个破折号,现在已经存在多年了。

if (empty($_POST['Tel'])||strlen(trim($_POST['Tel']))==0)
{$TelErr="<br>*Missing tel<br>";}
else if (strlen($_POST['Tel'])<11)
{$TelErr="<br>*Tel Number too short<br>";}
else if (strlen($_POST['Tel'])>12)
{$TelErr="<br>*Tel Number too long<br>";}
else if (preg_match("/^[0-9+]$/", $_POST['Tel']))
{$TelErr="<br>*Please use numbers only<br>";}

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

preg_match("/^(\d+-?)+\d+$/", $_POST['Tel'])

使用'?'匹配最近的短划线。

这是一个例子:

1 <?php
2 $texts = array('123-456', '123--456', '-----------');
3 foreach ($texts as $text) {
4     if (preg_match("/^(\d+-?)+\d+$/", $text, $match)){
5         echo "$text is valid\n";
6     } else {
7         echo "$text is not valid\n";
8     }
9 }
10 ?>

输出:

123-456 is valid
123--456 is not valid
----------- is not valid