PHP preg_match 只允许数字、空格“+”和“-”

Cod*_*hhz 3 php regex string validation preg-match

我需要检查一个变量是否包含除 0-9 和“-”和“+”字符以及“”(空格)以外的任何内容。

我写的 preg_match 不起作用。任何帮助,将不胜感激。

<?php

$var="+91 9766554433";

if(preg_match('/[0-9 +\-]/i', $var))
 echo $var;
?>
Run Code Online (Sandbox Code Playgroud)

cb0*_*cb0 6

您必须将 a*作为量词添加到整个字符类,并在正则表达式的开头和结尾添加锚点^并且$意味着只匹配从行首到行尾只包含内部正则表达式的行。此外,i修饰符是不必要的,因为在此正则表达式中不需要不区分大小写。

这应该可以完成工作。

if(!preg_match('/^[0-9 +-]*$/', $var)){
     //variable contains char not allowed 
}else{
     //variable only contains allowed chars
}
Run Code Online (Sandbox Code Playgroud)

  • 实际上,您不必转义 `+`,并且因为 `-` 是组中的最后一个字符,因此您也不必转义它。 (2认同)