まあ、私は固まっていますが、RegExがPHP preg_matchに提供する正しいフォームが見つかりません。許可されている文字または文字列の存在を確認してください
私は2つの弦を持っています。 "mdo"
と"o"
と言ってくださいが、実際はランダムかもしれません。
私は許可された文字と文字列の辞書を持っています。
たとえば、許可される文字は"a-gm0-9"
であり、許可される文字列は"do"
と"si"
です。
GOAL
私は、入力文字列は、任意の文字または文字列が、辞書、大文字と小文字を区別しないで、それらが含まれていないことを確認しようとしています。
m
が文字列do
のように許可されているので、"mdo"
のケースは一致しません。代わりにo
と同じではありません。o
は許可された文字ではなく、許可された文字列全体が含まれていませんdo
。
私の苦労理由
それは[^a-gm0-9]
と(?!do|si)
を否定しても大丈夫ですが、私は達成できないことは、次のPHPコードを適用するために、単一の正規表現の内側にそれらを配置することです:
<?php
$inputStr = 'mdo';
$rex = '/?????/i'; // the question subject
// if disallowed chars/strings are found...
if(preg_match($regex, $inputStr) == 1)
return false; // the $inputStr is not valid
return true;
?>
2つのカスケードpreg_matchesがロジックを破壊し、動作しないためです。
1つの正規表現で文字チェックとグループチェックを混在させるにはどうすればいいですか?彼らの位置は関係ありません。
許可された文字と部分文字列をチェックし、if条件でpreg_match関数自体を否定する方が簡単です。 –
主な問題(私が思う)は、 "do"と "si"の両方が許可されていない文字をカウントするということです。 – Random