我需要验证一些数据并确认该模式仅包含a-z
,A-Z
,0-9
,full-stop
或forward slash
。
if(!preg_match("/^[a-zA-Z0-9 ./]*$/",$field)) {
$fielderror = "Field can only contain a-z A-Z 0-9 . /";
}
但是,它似乎允许其他特殊字符,例如:@ # and $
。
任何想法?以为我错过了一些非常明显的东西......
答案 0 :(得分:1)
您必须只转义/
,因为它用作分隔符(出现在模式的开头和结尾):
if(!preg_match("/^[a-zA-Z0-9 .\/]*$/",$field)) {
$fielderror = "Field can only contain a-z A-Z 0-9 . /";
}
有关正则表达式中使用的here的详细信息,请参阅delimiters。
答案 1 :(得分:0)
您的代码有错误:
E_WARNING:类型2 - preg_match():未知修饰符']' - 第4行
$field = "123";
//$field = "@*";
if(!preg_match("/^[a-zA-Z0-9 \.\/]+g/",$field)) {
echo "Field can only contain a-z A-Z 0-9 . /";
} else {
echo "its ok";
}
您可以使用此regex
:
^[a-zA-Z0-9\.\/]+