0

以下を検証してグループ化するための正規表現を作成するのに問題があります。

  • c1dev01->有効
  • c1dev01:25->有効
  • 192.168.2.3->有効
  • 192.168.2.3:189->有効
  • c1dev01:->有効
  • c1dev01:aa->無効
4

2 に答える 2

0

正しい範囲の検証は、正規表現ではなく、別のステップで行うのが最適だと思います。ただし、正規表現は、文字列形式を検証し、ポート番号を一度に抽出するのに最適です。フォーマットの場合、最大で1つのコロンと、その右側の数字のみ(最大で5)が必要です。これは、次のパターン文字列に対応します。

@"^([^:]+)(?:[:](\d{0,5}))?$"

ここで、^と$は、パターンを文字列の最初と最後に固定します。Regex.Match()でこのパターンを使用する場合、match.Groups [1] .Valueでホスト名を検索し、match.Groups [2] .Valueでポート番号を検索して、65535以下であることを確認できます。

もちろん、ホストに許可される文字をさらに制限することもできます。

于 2012-11-16T11:50:29.607 に答える
0

^(?(\d{1,3}。\d{1,3}。\d{1,3}。\d{1,3})|(\ w +))(:(?\ d {0 、5}))* $

ホスト/IPの使用match.Group["host"]を取得し、ポートの使用を取得するにはmatch.Group["posrt"]

于 2012-11-16T12:03:20.810 に答える