改进网址的正则表达式

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:35:04

>我有这个正则表达式用于URL

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

我几乎所有的测试场景都有效,除了一个

"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

有没有人可以帮助我改善我的正则表达式

改进网址的正则表达式

我不推荐这个。

例如,www.foo可以是有效的本地主机名。

不管怎样。让System.Uri完成艰苦的工作,并通过其众多属性访问各个部分

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

每个有效 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); 
?>