为什么这个正则表达式不起作用?

时间:2011-08-13 16:54:32

标签: php html regex validation

if(!preg_match('^[\+0-9\s\-]+$',$tel_nr))
            { 
                die("Invalid number.");
            } 

我希望数字只是数字,空格,减号,加号,没有别的,最后最好是5位数,最多12位数。

当我尝试时会发生什么事情,没有任何事情发生,即:“12345”失败。

任何帮助?

4 个答案:

答案 0 :(得分:8)

!preg_match('/^[\+0-9\s\-]{5,12}$/',$tel_nr))

你忘了使用分隔符。

答案 1 :(得分:0)

添加分隔符+ {minlength,maxlength}

if(!preg_match('~^[\+0-9\s\-]{5,12}$~',$tel_nr))
            { 
                die("Invalid number.");
            } 

答案 2 :(得分:0)

您必须使用/来分隔表达式的开头和结尾。以下代码有效:

if (!preg_match('/^[\+0-9\s\-]+$/',$tel_nr)) { 
  die("Invalid number.");
}     

答案 3 :(得分:0)

您是在寻找5-12个字符,还是5-12个数字,其他字符是可选的?如果是数字,你需要这样的东西:

if (!preg_match('~^(?:[\+\s\-]*[0-9]){5,12}[\+\s\-]*$~', $tel_nr))