.jpg
文字列がまたはで終わらないことだけを気にする場合は.png
、これを使用できます。
^.+$(?<!\.jpg)(?<!\.png)
^.+
厳密には必要ではありませんが、JSON パーサーのコーディング方法によっては、正規表現に文字列全体を強制的に使用させる必要がある場合があります。他の検証にも正規表現を使用している場合は、次のようなより複雑なものが必要になる場合があります。
^\w+(?:\.\w+)+$(?<!\.jpg)(?<!\.png)
(?<!\.jpg|\.png)
Python の正規表現フレーバーは、後読みに関しては最も制限が厳しいものの 1 つであるため、おそらく を使用しようとしましたが、これは機能しません。PHP と Ruby 1.9+ は、それぞれの選択肢が固定長であるため、それを受け入れます。同じ長さである必要はありません。(?<!\.jpg|\.jpeg|\.png)
もうまくいくでしょう。のようにドットを因数分解しようとしないでください(?<!\.(?:jpg|jpeg|png))
。代替は、後読みの最上位にある必要があります。
Java は、後読みが一致する必要がある可能性のある最大文字数を決定するために、コンパイル時にもう少し作業を行うため、除外されたバージョンを受け入れます。ただし、後読み式はかなり単純である必要があり、+
または*
量指定子を使用できません。最後に、.NET および JGSoft フレーバーは後読みにまったく制限を設けません。しかし、Python は、後読みが一致する必要がある正確な文字数を把握するために非常に単純な試みを行い、失敗したときに不可解なエラー メッセージを生成します。