2

私はこの正規表現を持っています:

^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\""\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\""\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4}))|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\""\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$

ほとんどの場合は機能しますが、一致しませんlocalhost:8888

この式を変更して一致させるにはどうすればよいlocalhost:8888ですか?

4

1 に答える 1

2

?行方不明だったのは、最上位ドメインのオプション ( ) だけでした。

^((([hH][tT][tT][pP][sS]?|[fF][tT][pP])\:\/\/)?([\w\.\-]+(\:[\w\.\&%\$\-]+)*@)?((([^\s\(\)\<\>\\\""\.\[\]\,@;:]+)(\.[^\s\(\)\<\>\\\""\.\[\]\,@;:]+)*(\.[a-zA-Z]{2,4})?)|((([01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]\d|25[0-5])))(\b\:(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)\b)?((\/[^\/][\w\.\,\?\'\\\/\+&%\$#\=~_\-@]*)*[^\.\,\?\""\'\(\)\[\]!;<>{}\s\x7F-\xFF])?)$

必要なものを含むいくつかの例に一致します。

http://www.rexfiddle.net/6tWa1Wl

ただし、.NETの組み込みクラスを使用することを強くお勧めします。これUri、この解析と検証をすべて処理するためです (これまでのどの正規表現よりも優れています)。それは多目的に使えるように設計されており、何らかの種類の URI を扱っている場合にできないことはほとんどありません (そうであるように見えます)。正規表現よりも高速になると確信しています。それも。

于 2013-10-23T21:07:34.527 に答える