0

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

"^(((https?|ftp|file|)://)|(www))[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]$"

1つを除いて、ほとんどすべてのテストシナリオが機能します

"www.foo" <---WRONG this url it's not valid for my system
"www.foo.com" <--- valid
"www.blah.net" <--- valid
"http://blah.com" <--- valid
"https://blah.com" <--- valid

誰かが私の正規表現を改善するのを手伝ってくれるでしょうか

4

2 に答える 2

4

これはお勧めしません。

www.fooたとえば、有効なローカル ホスト名である可能性があります。

それにもかかわらず。System.Uri大変な作業をして、その多数のプロパティを介してさまざまな部分にアクセスしましょう

http://msdn.microsoft.com/en-us/library/system.uri.aspx

于 2012-05-21T20:00:14.483 に答える
1

すべての有効な URL の正規表現

<?php 

function validateURL($val) {
  $pattern_1 = "/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";
  $pattern_2 = "/^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";       
  $pattern_3 = "/^(([A-Z0-9][a-zA-Z0-9_-]*)+.(co|in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";
  $pattern_4 = "/^(([A-Z0-9][a-zA-Z0-9_-]*)+.(co|in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se*)+.(co|in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";
  if(preg_match($pattern_1, $val) || preg_match($pattern_2, $val) || preg_match($pattern_3, $val) || preg_match($pattern_4, $val)){
    return true;
  } else{
    return false;
  }
}

$url = "google.com.in";
echo validateURL($url); 
?>
于 2012-11-18T13:20:31.970 に答える