当调用此函数时,它给出了消息 警告:preg_match()[function.preg-match]:没有结束分隔符'/'
这是检查字母数字输入的功能
function CheckAlphanumeric($element,$minlength,$maxlength)
{ if (!preg_match ("/[^A-Za-z\s\0-9 - @ .]//", $element) && strlen($element)>=$minlength && strlen($element) <=$maxlength) { return TRUE; }
else { return FALSE;}
}
您对此警告有何看法?
答案 0 :(得分:7)
你想要逃避最后一个正斜杠(或删除它,不确定它是否应该在那个正则表达式中?)。此外,你在0之前有一个反斜杠,这也没有任何意义。
# escape it if it's supposed to be in there.
/[^A-Za-z\s0-9 - @ .]\//
或
# use a different character as a delimiter
%[^A-Za-z\s0-9 - @ .]/%
或
# remove it if it's a typo!
/[^A-Za-z\s0-9 - @ .]/
另外,您知道可以使用[:alnum:]
快捷方式吗? (src)
# matches alpha numeric, "-", "@", and "."
/[[:alnum:]-@.]/
希望最终修改:
我建议你先看看你的功能,这有点令人困惑。你基本上想要检查三个条件,1)它是否通过正则表达式,2)它是gte最小长度,3)它是否最大长度。由于所有这三个返回布尔值(或正确评估为布尔值的东西),您可以按如下方式简化功能:
function CheckAlphanumeric($element,$minlength,$maxlength) {
// returns TRUE if it matches all conditions, FALSE if one fails.
return preg_match("/[[:alnum:]-@. ]/", $element) && strlen($element) >= $minlength && strlen($element) <= $maxlength;
}
答案 1 :(得分:1)
对于你所拥有的内容,这是一个奇怪的错误消息,但在正则表达式结束时你有两个/
。您应该只有一个:"/[^A-Za-z\s\0-9 - @ .]/"
如果您想要将文字/
用作分隔符,则需要使用\
对其进行转义。