2014-12-04 33 views
0

我不知道爲什麼它允許輸入多個破折號,現在已經這麼多年了。RegEx-Tel Number允許輸入垃圾短信

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

如果有這樣的標記'php'? – Squidly 2014-12-04 10:49:11

+0

你只匹配那裏的一個號碼。你可能想在'[0-9]'後加'+' – Squidly 2014-12-04 10:50:02

+0

你能給我們提供更多的信息嗎?你現在得到什麼?你應該得到什麼? – 2014-12-04 10:52:34

回答

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 
+0

感謝您的幫助luis,但似乎並沒有阻止垃圾短信 – ababusa 2014-12-04 11:45:17

+0

你能否給我一個例子,我已經用多個破折號字符串(123--456)嘗試過它,並且它不匹配。 – 2014-12-04 11:52:10

+0

我應該輸入'-----------'來滿足匹配,我想阻止這個 – ababusa 2014-12-04 11:58:07