Windowsフォームアプリケーションのいくつかのフィールドで、IPアドレスまたはホスト名のいずれかを指定するようにユーザーに求めています。入力した値を検証するための適切な正規表現(regex)はありますか?または、私が考慮すべき別の方法はありますか?ユーザーがFQDNまたはIPアドレスを入力することをお勧めします。
4 に答える
アプリケーションの将来性を保証するIPAddress.TryParse()
ために、入力がIPアドレスであるかどうかを判断するために使用することをお勧めします。
「有効な」ホスト名を確認することは、ホスト名が存在する必要があるかどうかを指定しなかったため、より困難です。Dns.GetHostEntry()
もしそうなら、それが結果をもたらすかどうかを確認するために使用するのが最も簡単な方法でしょう。あなたが与えた説明に基づいて、はるかに正確な検証を得ることができません。
IPAddress.TryParseを呼び出そうとします。失敗した場合は、Dns.GetHostByNameを呼び出してみてください。
WindowsフォームアプリケーションのIPアドレスとホスト名を尋ねる必要があるのはなぜですか?これらがローカルPCの詳細である場合は、以下から取得できます。-
1)ホスト名を取得するには、 Dns.GetHostName()を呼び出すことができます(MSDNリファレンスを参照) 。
2)IPアドレスを取得するには、 Dns.GetHostByName()を介してIPアドレスを列挙できます(MSDNリファレンスを参照) 。
フォーマットが有効かどうかを検証したい場合は、次を使用できます
bool isValid = Uri.CheckHostName(hostname) == UriHostNameType.Dns;
正規表現の代わりに、エラーが発生しやすい可能性があります。これは、ユーザーが将来設定されるホスト名を指定できる事前構成アプリケーションで使用します。この目的でDns.GetHostEntry
は、ホスト名を解決しようとするため、適切ではありません。ホスト名はまだ割り当てられていないため失敗します。
だからそれはあなたのニーズに依存します。ユーザーが実際に解決できるホスト名を入力する必要がある場合は、Dns.GetHostEntry()
またはIPAddress.TryParse()
を使用することをお勧めします。入力検証を行うだけの場合は、を試してくださいUri.CheckHostName
。