$gi = filter_var(filter_var($_POST['group_id'], FILTER_SANITIZE_STRING),
FILTER_VALIDATE_REGEXP, array(
"options"=>array("regexp"=>"/^[a-zA-Z0-9_](?=[^\s]+$).{5,20}$/")));
これは私が使用しているコードです。これはPHP & MySQLアプリケーションです。問題は、5文字以下の任意の値でFALSEを返していることです。 '5'を '6'に変更すると、6文字以下の場合はFALSEが返されます。どうしてこれなの?RegExpが正しい文字数でfalseを返すのはなぜですか?
はまた、次のコードは、同じように動作します:
$gi = filter_var($_POST['group_id'], FILTER_VALIDATE_REGEXP,
array("options"=>array(
"regexp"=>"/^[a-zA-Z0-9_](?=[^\s]+$).{5,20}$/")));
私は私の正規表現が1である印象の下だ)文字、数字、およびアンダースコアにエントリを制限する、2)空白を禁止する、および3)少なくとも5文字を必要とし、最大20文字を設定します。
否定演算子 '^ 'は否定演算子ですか? AFAIK '^ \ w'は' \ W'と同じです – Machinarius
最小長は7ではなく6です。 '(?= [^ \ s] + $)'は先読みなので、文字を消費しません。 –
ありがとう、Brad。私が解決できなかったもう一つの小さな質問。正規表現を修正して特定の単語を禁止するにはどうすればよいですか?例えば。 QWERTY、または冒涜? – David