警告:preg_match()[function.preg-match]:找不到结束分隔符'/'

时间:2012-03-13 18:23:36

标签: php error-handling preg-match design-patterns validation

当调用此函数时,它给出了消息 警告: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;}

 }

您对此警告有何看法?

2 个答案:

答案 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 - @ .]/"如果您想要将文字/用作分隔符,则需要使用\对其进行转义。