2012-03-13 7 views
1

この関数が呼び出されたときにメッセージを返しました 警告:preg_match()[function.preg-match]:終了デリミタなし ' /」警告: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

2つの閉じた '/'文字のうちの1つを削除しようとしましたか? –

+0

@SurrealDreams私はまだ警告メッセージを受け取りました。 – user1154295

答えて

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]]/ 

うまくいけば、最終的な編集:

私はそれが少し混乱だ、あなたも最初の場所であなたの関数を見てみましょうお勧めしたいです。基本的に3つの条件、1)正規表現を渡すか、2)最小の長さ、3)最大の長さかをチェックしたい。これらの戻りブール値(またはブール値として正しく評価するもの)の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

区切り文字をesacapeする必要がある場合は、それを変更することを考えるべきです。 '〜[^ A-Za-z \ s \ 0-9 - @。 ] /〜 '。 – meze

+0

@meze私はそれを試してみて、それを変更しました:いいえ区切り記号 '〜'が見つかりました – user1154295

+0

@Owenありがとうございます:) – user1154295

1

は、まあ、それはあなたがそこに持っているもののための奇妙なエラーメッセージですが、あなたは2つの/を持っていますあなたの正規表現の終わり。 "/[^A-Za-z\s\0-9 - @ .]/"区切り文字として使用するときに/と一致させる場合は、\でエスケープする必要があります。

関連する問題