TR1 正規表現を使用してデバイス設定のユーザー入力を評価するプログラムを維持しています。このプログラムのビルド環境を Visual Studio 2008 から Visual Studio 2010 に切り替えました。次の正規表現を使用して、IP アドレスの形式を確認していました。
^([0-9]{1,3})?(\.[0-9]{1,3}){0,3}$
以下は、検証する必要がある入力の例です。
192.168.11.197
何らかの理由で、VS2010 では、この正規表現は正しい形式の IP アドレスを検証しなくなりました。この正規表現を次のように置き換えることで、この問題を解決しました ( DNS ホスト名または IP アドレスに一致する正規表現でこれを見つけました? :
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
私の質問は、以前の正規表現が機能しなくなったのはなぜですか? 私は正規表現の ASCII アートの微妙な部分の達人ではないことを認めますが、理解できる解決策があると思っていました。