2012-03-13 59 views
1

时调用此函数它给了消息 警告:的preg_match()[function.preg匹配]:没有结束符“ /”警告:的preg_match()[function.preg匹配]:没有结束符“/”发现

这是检查字母数字输入

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

您是否尝试删除两个关闭的'/'字符之一? – 2012-03-13 18:25:28

+0

@SurrealDreams我做了,我仍然收到了警告信息 – user1154295 2012-03-13 18:34:31

回答

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:][email protected]]/ 

希望最终编辑:

我建议你把摆在首位看看你的功能太多,这是一个有点混乱。你基本上要检查三个条件,1)是否传递正则表达式,2)它是否是最小长度,3)它是否超过最大长度。由于所有这三个返回布尔值(或东西,评估正确的布尔值),可以简化功能如下:

function CheckAlphanumeric($element,$minlength,$maxlength) { 
    // returns TRUE if it matches all conditions, FALSE if one fails. 
    return preg_match("/[[:alnum:][email protected] ]/", $element) && strlen($element) >= $minlength && strlen($element) <= $maxlength; 
} 
+0

我想说如果你需要使用分隔符,你应该考虑改变它:'〜[^ A-Za-z \ s \ 0-9 - @。 ] /〜'。 – meze 2012-03-13 18:29:03

+0

@meze谢谢,我试过了,它变成了:没有结尾分隔符'〜'发现我 – user1154295 2012-03-13 18:32:13

+0

@Owen非常感谢你:) – user1154295 2012-03-13 18:40:08

1

那么这对你有没有什么奇怪的错误消息,但你有两个/在正则表达式的结束。您应该只有一个:"/[^A-Za-z\s\0-9 - @ .]/"如果要在使用它作为分隔符时匹配字面/,则需要使用\将其转义。

相关问题