2016-05-23 7 views
-1

を強調し、私は正規表現を使用する非常に新しいですし、唯一A-Z, a-z, 0-9, -, _英数字、ダッシュを可能にするためのPHPの正規表現は、

私が働いている、以下の式使用しています許可しようとしています:

preg_match('/^[a-zA-Z0-9-_]+$/i', $_POST['sign_up_username']) 

私の質問はこれを行うことについて正しい方法がある場合です。これを掲載するのが適切かどうかはわかりません。どんな助けも素晴らしいだろう。ありがとう。

+0

あなたの質問は広すぎます。あなたが直面している問題や課題を指摘してください。 – AKS

+0

@AKS基本的に私の正規表現では、大文字と小文字、数字、ダッシュ、アンダースコアだけが許されます。私はちょうど数日前に正規表現を使って作業を始めました。 – Coilerz

+0

なぜ狭い方法でユーザーアカウント名を制限したいのですか? – arkascha

答えて

2

正規表現が正しくありません。 -を最後または最初に移動するか、-が文字クラス内で特別な意味を持つため、文字クラスでエスケープします。文字クラス内のrangeを示します。あなたはまた

^[\w-]+$ 

使用することができ、また

^[-a-zA-Z0-9_]+$ 

ので

\w = [a-zA-Z0-9_] 

使用することができ、最終的にははい、それが唯一のAZの両方を許可するi修飾の必要はありません大文字と小文字、数字、ダッシュ、アンダースコア。

これは

preg_match('/^[\w-]+$/', $_POST['sign_up_username']) 
+0

'preg_match'に関して私に例を教えてください。私は最後と最初にスラッシュについてはまだ非常に不明です。 – Coilerz

+0

@Coilerzが更新されました。 'preg_match'.' /'で条件が '/../ 'と正規表現として扱われることを示すために使用できる場合は使用できます – rock321987

+0

あなたの助けてくれてありがとう、魅力的です。私はあなたの答えを可能な限り早く受け入れます。 – Coilerz

0

場合(するpreg_match( '/^[-ZA-Z0-9 -_] + $/i' は、$ strの)== 1)

PHPで十分でしょう{

// string only contain the a to z , A to Z, 0 to 9, -_ 

echo "yes";

}

{

が "NO" のエコー。

}

関連する問題