0

IE6 を除くすべてのブラウザーで正常に動作する正規表現があります。調査によると、IE6 は先読みアサーションをサポートしていません。とにかく、次の式をクロスブラウザに書き換えることはできますか?

パスワードは 8 ~ 20 文字で、少なくとも 1 つの大文字、1 つの小文字、および 1 つの数字を含む必要があります

.Net および正規表現バリデーターを使用しています。

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$
4

2 に答える 2

0

率直に言って、もし IE6 用に書くことを余儀なくされているのなら、それについて過度に賢くしようとするのは避けたいと思います。使用できるようにするために必要なことを行います。

私が検討するオプション:

  1. 正規表現を 3 つの個別のクエリに分割します。先読みはもう必要ありません。それはより遅く、より乱雑になるでしょうし、あなたがむしろそれを適切にコーディングしたいと思うことは知っていますが、IE6 をサポートしたい場合、これらは私たちが犠牲にするものです。それは機能し、ユーザーにとって目立った違いはありません。

  2. Javascript でやろうとすることを忘れて、サーバー側で単純に検証してください。これが明らかに内部使用のみのサイトであることを考えると (まともな考えで IE6 をサポートする外部使用のサイトを作成する人はいないでしょう)、レスポンシブ UI のような細かな点、特に次のようなフリンジ機能を削除することでおそらく回避できます。パスワード管理。

最後に、IE6 が廃止されたことを貴社に強調してください。Microsoft は、2014 年の初めにすべてのサポートを終了します。この時点で、見つかったセキュリティ上の問題 (およびそれらの多くが存在します) は修正されません。そのため、マルウェアによって積極的に標的にされることは間違いありません。ネットワークに IE6 が存在することは、想像を絶するセキュリティの悪夢になります。アップグレードするのに 1 年かかります。今から計画を立てないと、目標を達成できず、ハッキングされる可能性が高くなります。

あなたの会社にある程度のセンスがあり、アップグレードが実際に行われると仮定すると、現在作成している IE6 固有のコードの保存期間は限られていることに注意してください。最初に言ったことを繰り返します。IE6 ユーザーが使用できるようにするために必要なことを行います。しかし、それを彼らにとって良いものにするためにあまり努力しないでください.

于 2012-07-06T21:40:04.090 に答える
-1

あなたは間違った正規表現を持っています、これを使用してください:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$
于 2012-07-05T15:34:44.767 に答える