16

localhost、、、または任意127.0.0.1のループバックアドレスの使用時にユーザーに警告する必要があるアプリケーションがあり::1ます(ターゲットホストは、必ずしもアプリケーションの環境内ではなく、データベース間の接続に使用されます)。次のようなアドレスがあるため、これは複雑になります...

  • 127.1
  • 127.0.01
  • 127.0000.0000.1
  • 127.0.0.254
  • 127.63.31.15
  • 127.255.255.254
  • 0::1
  • 0000::0001
  • 0000:0:0000::01
  • 0000:0000:0000:0000:0000:0000:0000:0001

...消費するコードによって適切に解析され、ループバックに解決されます。

IPv4およびIPv6ループバックアドレスの順列に一致する正規表現とは何ですか?

4

3 に答える 3

32

RegexBuddy (テスト駆動のRegEx構築のための本当に素晴らしいツールです)を少しいじった後、私はこれを思いつきました:

^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$

この正規表現は一致します

文字列「localhost」

  • localhost
  • LOCALHOST

IPv4ループバックアドレスのこれらの順列

  • 127.0.0.1
  • 127.0.0.001
  • 127.0.00.1
  • 127.00.0.1
  • 127.000.000.001
  • 127.0000.0000.1
  • 127.0.01
  • 127.1
  • 127.001
  • 127.0.0.254
  • 127.63.31.15
  • 127.255.255.254

IPv6ループバックアドレスのこれらの順列

  • 0:0:0:0:0:0:0:1
  • 0000:0000:0000:0000:0000:0000:0000:0001
  • ::1
  • 0::1
  • 0:0:0::1
  • 0000::0001
  • 0000:0:0000::0001
  • 0000:0:0000::1
  • 0::0:1

この正規表現は一致しません

有効なサーバー名

  • servername
  • subdomain.domain.tld

これらの有効なIPv4アドレス

  • 192.168.0.1
  • 10.1.1.123

これらの有効なIPv6アドレス

  • 0001::1
  • dead:beef::1
  • ::dead:beef:1
于 2011-12-08T05:00:37.990 に答える
4

アドレスが有効かどうかを証明する必要がない場合は、次のように機能するはずです。

/^(127\.[\d.]+|[0:]+1|localhost)$/i
于 2011-12-08T05:05:38.030 に答える
1

IPv6ループバックアドレスのさまざまな順列をキャプチャするために、この正規表現を作成しました。

(0 {0,4}:{1,2}){1,7}(0 {0,3} 1)

私はそれを次のアドレスでテストしました:

  • 0:0:0:0:0:0:0:1
  • 0000:0000:0000:0000:0000:0000:0000:0001
  • :: 1
  • 0 :: 1
  • 0:0:0 :: 1
  • 0:0:0000 :: 1
  • 0000:0:00 :: 0001
  • 0000 :: 0001
  • 0000:0:0000 :: 0001
  • 0000:0:0000 :: 1
  • 0 :: 0:1

そしてそれはそれらすべてを捕らえました。

http://regexr.com/3bqpmでテストできます

于 2015-09-19T16:52:35.013 に答える