どの文字が preg_match 関数に一致しないかを知る方法はありますか? 例えば:
preg_match('/^[a-z]*$/i', 'Hello World!');
間違った文字、この場合はスペースと「!」を知る機能はありますか?
返信ありがとうございます。ただし、例の問題は、文字列の開始と終了を示していないことです。あなたの例は、パターンで定義したのとまったく同じ文字列ではなく、別の文字列に含まれる文字列で機能します。
たとえば、次のようにフォーマットされた文字列で構成された、件名のイタリアの会計コードを検証する必要があるとします。
XXX XXX YY X YY X YYY X (X = letter, Y = number - without spaces)
どのパターンが:
'/^[A-Z]{6}[0-9]{2}[A-Z]{1}[0-9]{2}[A-Z]{1}[0-9]{3}[A-Z]{1}$/i'
パターンで定義したものと正確に一致する文字列を検証する必要があります。
あなたのコードを使用して 1 文字 (1 つだけ) 間違えると、文字列全体がエラーとして返されました。 http://eval.in/9178
逆パターンの問題は、AND または OR が挿入される複雑なパターンで発生します。
私が知りたいのは、失敗したかどうかだけでなく、preg_match が失敗した理由です。