Php 允许输入垃圾邮件破折号的RegEx电话号码

Php 允许输入垃圾邮件破折号的RegEx电话号码,php,regex,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['Te

我不知道为什么它允许输入多个破折号,这已经有很多年了

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

你可以试试这样的东西:

preg_match("/^(\d+-?)+\d+$/", $_POST['Tel'])
使用“?”匹配最近的破折号

这里有一个exmaple:

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

这应该被标记为php吗?你只匹配了一个数字。您可能需要[0-9]之后的+您能给我们提供更多信息吗?你现在得到了什么?你应该得到什么?我已经试过了,巴德,阻止了电话号码,但仍然允许破折号Vincent,我想输入一个电话号码,只是数字,想允许一个空格或一个破折号,但不允许多个破折号感谢路易斯的帮助,但似乎无法阻止垃圾邮件破折号你能给我举个例子吗,我用多个破折号字符串123-456尝试了它,但它不匹配。如果我输入“-----”它满足匹配,我想防止这种情况不匹配,至少在我的php中,我已经用完整的示例和输出更新了响应。欢迎您,不管怎么说,你似乎只是在向符合表达式的数字显示请使用数字,对吗?
123-456 is valid
123--456 is not valid
----------- is not valid