2012-03-13 88 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 - @ .]/"如果要在使用它作爲分隔符時匹配字面/,則需要使用\將其轉義。

相關問題