ブラウザーが正規表現を解釈する方法には、大きな違いがあるに違いないことにますます気づき始めています。
例として、同僚が次の正規表現を作成して、アップロードされるファイルの拡張子が PDF であることを検証しました。
^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.pdf)$
これは Internet Explorer と Google Chrome では機能しますが、Firefox では機能しません。実際の PDF であっても、テストは常に失敗します。したがって、余分なものは無関係であると判断し、次のように単純化しました。
^.+\.pdf$
現在は Firefox で正常に動作するだけでなく、IE と Chrome でも引き続き動作します。
これは、ASP.NET の asp:FileUpload および RegularExpressionValidator コントロールに固有の癖ですか、それとも単に正規表現をさまざまな方法でサポートしているブラウザーが異なるためですか? いずれにせよ、あなたが遭遇した後者のいくつかは何ですか?