URLにマッチする正規表現
https?://(([-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*@)?((([a-zA-Z0-9]|
[a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9])\.)*([a-zA-Z]|[a_-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9
])\.?|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(:[0-9]*)?(/([-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-
9A-Fa-f][0-9A-Fa-f]_)*(;([-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*(/
([-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(;([-_.!~*'()a-zA-_Z0-9:@&=+
$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)*)?(\?([-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f]
[0-9A-Fa-f])*)?(#([-_.!~*'()a-zA-Z0-9;/?:@&_=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?
VBのRegexクラスでURLをチェックするための正規表現。
基本は,大崎 博基さんのページに掲載されているPerl用正規表現のうち,VBで使えない表記を除いただけ。
大崎さんによると,上の正規表現の元となるPerlコードはRFC 2616(HTTP)や1738(URL)に忠実に書かれているようだが,忠実であるが故に,実務でValidatorとして使うには不足している内容もある。たとえば:
- RFC 1034や2181(どちらもDNS)によれば,ドメイン名に用いるラベルの文字数は63文字(オクテット)以下であるが,この正規表現では,その制限がない。
- また,現行のTCP/UDPのポート番号は16ビットの符号なし整数なので,65536以上のポートは存在しないが,RFC 2616通りのURLでは6桁だろうが7桁だろうが論理的には無限大のポート番号が指定できてしまう。
VB 2005で利用できる正規表現については,以下の書籍が参考になった:
プログラミング MS VISUAL BASIC2005 言語編 (マイクロソフト公式解説書)
- 作者: フランチェスコバレナ,Francesco Balena,クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2006/10/21
- メディア: 単行本
- クリック: 8回
- この商品を含むブログ (5件) を見る