IPとドメイン名の正規表現

5392 ワード

IPアドレスの正規表現
キーワード:IPアドレス 正規表現の著者:txw 1958出所:http://www.cnblogs.com/txw1958/archive/2011/10/13/ip_address_レギュラ.expression.  
IPアドレスの長さは32桁で、4段に分けて、8桁ごとに10進数で表します。数字の範囲は0~255で、セグメントとセグメントの間は英語の句点「.」で区切ります。例えば、あるコンピュータのIPアドレスは10.11.44.100です。
IPアドレスの構成特徴を分析する:250-235、200-2249、0-199。  この3つの状況は別々に考えられます。  1.250-255:特徴:三桁、百桁は2、十桁は5、桁は0~5で、正規表現で25[0-5]と書くことができます。  2.200-249:特徴:三桁、百桁は2、十桁は0~4、桁は0~9で、正則表現で2[0-4]\dと書くことができます。  3.0-199:これは分解し続けることができます。このように書くと分かりやすいです。    3.1.0-9:    特徴:一桁の桁数、一つの桁は0~9で、正規表現で書くことができます。\d    3.2.10-99:  特徴:二桁、十桁は1~9、桁は0~9、正規表現で「1-9」と書くことができます。    3.3.100-139:特徴:三桁、百桁は1、十桁は0~9、桁は0~9、正則式で書くことができます。1\d{2}
そこで0-99の正規表現は[1-9]にまとめて書くことができますか?\dでは、0-199は正規表現で(1\d{2}|([1-9]?\d)と書くことができ、0~255の正規表現は、(25[0-5]|2[0-4]\d|(((1\d{2])|([1-9]?d)))))))))))と書くことができます。  最後に、前の3段にピリオドを加えて、{3}を使って繰り返して得られ、第4段にもう一度同じマッチングをして、IPアドレスの正規表現を得ることができます。
 
((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))
みんなと対話してみよう。 
1.  なぜ三桁のマッチが二桁/一桁の前にあるのですか?正規表現のルールの一つは、最初のマッチが最も優先されるからです。  2.  0.0.00と255.255.255.255は合法的に存在するIPアドレスです。なぜですか?3.  192.169.01.108このような数字の前に0のタイプを多く持っていますが、ここでは合法的ではないです。なぜこのようにしますか?4.  どうして前は一番前にあるのですか?どうですか?ここでは何の役に立つのですか?  5.  この表式に間違いがあったら、メッセージを残してください。
私が使っている正規表現の検証ツールは、The Reglatorです。 ダウンロード先:http://sourceforge.net/projects/regulator/
IPアドレスを検出する正規表現
正規表現:
((2[0-4]\d|25[0-5]|[01]?\d\d?)/){3}(2[0-4]\d 124; 25[0-5]|[01]?\d?] 
((2[0-4]\d|25[0-5]|[01]?\d\d?)/){3}(2[0-4]\d 124; 25[0-5]|[01]?\d?]
赤いブロックの代表:最初の文字は2、2番目の文字は0から4、3番目の文字は任意の1桁の数字です。200~249を表します
緑のブロックの代表:最初の文字は2、2番目の文字は5、3番目の文字は0から5です。250~255を表します
青のブロックの代表:最初の文字は0か1か、あるいはこの文字がなくてもいいです。2番目の文字は任意の1桁の数字です。3番目の文字は任意の1桁の数字です。この文字がなくてもいいです。1~199を表します。プリアンブルがあります。
「124」は「または」の意味で、3つのうちのいずれかのブロックの意味を満たしている限り。
前後の「(」と「)」はこれを表します。
((2[0-4]\d|25[0-5]|[01]?\d\d?)/){3}(2[0-4]\d 124; 25[0-5]|[01]?\d?]
{3}は3回繰り返します。例えば「255.255.255.」
 ((2[0-4]\d|25[0-5]|[01]?\d\d?)/){3}(2[0-4]\d 124; 25[0-5]|[01]?\d?]
最後のグループの意味は同じです。つまり「.」の後に同じテストがあります。
正規表現はドメイン名にマッチします。
ブログのカテゴリ:  JS Java
DNSはドメイン名の中の記号はすべて英字と数字で構成されています。各記号は63文字を超えないし、大文字と小文字を区別しないと規定しています。記号にはハイフン(-)以外の句読点は使用できません。一番低いドメイン名は一番左に書いて、一番高いドメイン名は一番右に書いてください。複数の記号からなる完全なドメイン名は全部で255文字を超えません。
これにより完全なドメイン名にマッチする正規表現:
   ^(?=^.{3,255}[-a-zA-Z 0-9][-a-zA-Z 0-9]{0,62}(\.[a-zA-Z 0-9])[-a-zA-Z-0-9]{0,62}+$
完全なドメイン名は、ルートドメイン、トップドメイン、2つのレベル、3つのレベルで構成されています。ドメイン名は、各レベルのドメイン名は、アルファベット、数字とマイナス記号で構成されています。
明らかに、個々の名前は正規表現[a-zA-Z 0-9]“-a-zA-Z 0-9”{0,62”で一致することができますが、完全なドメイン名は少なくとも2つの名前(例えば、google.comとgoogleとcomで構成されています)を含み、最後にルートドメインを示す点があります。(規範の中で、最後に一つの点が完全なドメイン名であるが、二つ以上の名前を含むドメイン名も完全なドメイン名であり、たとえその後ろに点がないとしても)。
完全なドメイン名にマッチする正規表現:
[a-zA-Z 0-9]“-a-zA-Z 0-9”{0,62}(/.[a-zA-Z 0-9])[-a-zA-Z 0-9]{0,62}+/?
http://blog.csdn.net/seawave/article/details/1520988
 
(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{1,63}(?\.)+[a-zA-Z]{2,63}\.?$)
http://stackoverflow.com/questions/11809631/fully-qualified-domain-name-validation