許可する文字列のみをチェックしたいのですa-z A-Z 0-9 . / ? &
が、正確に preg_match() を使用する方法がわかりません。
コードの各部分が何であるかも説明していただければ幸いです。(つまり、追加する理由と追加する/^
方法/
)
ありがとう
許可する文字列のみをチェックしたいのですa-z A-Z 0-9 . / ? &
が、正確に preg_match() を使用する方法がわかりません。
コードの各部分が何であるかも説明していただければ幸いです。(つまり、追加する理由と追加する/^
方法/
)
ありがとう
ここにあります:
$input = 'Hello...?World';
$regex = '~^[a-z0-9&./?]+$~i';
if (preg_match($regex, $input)) {
echo "yeah!";
}
この方法で、独自の文字クラスを構築し、文字列を検証できます。
説明:
~
^ # string start
[ # start character class
a-z # letters from a to z
0-9 # digits from 0 to 9
&./? # &,.,/ and ? chars
] # end character class
+ # repeat one or more time
$ # string end
~ix
if ( preg_match('[^a-zA-Z0-9./?&]', 'azAZ09./?&') ) {
//found a character that does not match!
} else //regex failed, meaning all characters actually match
ioseb のものとかなり似ていますが、大文字と小文字が異なるため、AZ を含める必要があります。彼はすでに文字の優れたガイドを書いているので、代わりの正規表現を紹介します。
代わりに、否定 (文字クラス '[]' の先頭に含まれる場合、代わりに別の意味を持つ先頭の ^ ) に依存し、その後に「許可された文字」の文字列が続きます。
そうすれば、正規表現が許可されていない文字 ([] は 1 文字を意味します) を検出した場合、解析を停止して true を返します。これは、無効な文字列が見つかったことを意味します。