3

ホスト名検証の正規表現を探しています。

DNS ホスト名または IP アドレスに一致する正規表現?

そのリンクでは、紳士はまともな正規表現を提案しています。私はそれにいくつかの問題/質問があります:

  • Windows コンピューター/ネットワークでは、次のような名前1abcdが許可されています (ローカル ネットワークで検証済み)
  • 提案された正規表現では、ドットは 1 回だけ表示される場合があります。abc.def.ghそれも有効なホスト名だと思いますよね。

奇妙ですが、ホスト名文字列を検証できる .NET クラスも見つかりませんでした (状況ですか?)。どんなアドバイスでも大歓迎です。

更新: クラス/メソッドの提案について - .NET/C# と SilverLight の両方で機能するものをアドバイスしてください。

4

3 に答える 3

3

Uri.CheckHostNameはあなたを助けることができるメソッドですか? ホスト名が認識されない場合、結果は"Unknown"になります。

于 2011-01-10T09:15:44.367 に答える
3

提案された正規表現では、ドットは 1 回だけ表示される場合があります。abc.def.gh も有効なホスト名だと思いますね。

ドットは複数回表示される場合があります。ここで正規表現をテストすると、一致することがわかります。

正規表現の関連フラグメント (最初の部分は):

([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*

Windows コンピューター/ネットワークでは、1abcd のような名前を使用できます (ローカル ネットワークで確認済み)。

ウィキペディアから:

RFC 952のホスト名の元の仕様では、ラベルを数字またはハイフンで開始することはできず、ハイフンで終了してはなりません。ただし、その後の仕様 ( RFC 1123 ) では、ホスト名ラベルを数字で開始することが許可されました。

RFC 952を参照しました。ホスト名の正規表現を更新して、 RFC 1123に準拠するようにします。

于 2011-01-14T12:08:49.070 に答える