2011-05-31 35 views
0

我想验证URL和其需要被允许以与出的http://URL验证的javascript jquery的

这意味着,如果用户类型为http://www.google.com或www.google.com应该允许给用户。 。

我试图jQuery的验证类来做到这一点..没有运气

我试图至REGx作为跟随其也没有工作,因为我想要的。任何帮助非常赞赏

<script> 

var myVariable = "http://www.google.com/"; 
if(/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test('www.google.com/')) { 
    alert("valid url"); 
} else { 
    alert("invalid url"); 
} 
</script> 
+0

你叫什么 “有效URL” 的网址是什么?它是有效格式化的字符串,还是实际链接到资源的URL? – RobG 2011-05-31 04:32:32

+0

嗨,我想http://www.google.com或wwww.google.com,但不是www.google.com – 2011-05-31 04:34:46

+0

方案匹配部分似乎不正确 - 我读[RFC 3986](http://tools.ietf .org/html/rfc3986#page-17),一个方案必须至少有2个字符。 RegExp似乎只允许一个。更好的RegExp可能是:'^ [a-zA-Z] [a-zA-Z0-9 \ + \ .-] +:' – RobG 2011-05-31 04:59:08

回答

0
function checkURL(value) { 
    var urlregex = new RegExp(
     "^((http|https|ftp)\://)*([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*$"); 
    if(urlregex.test(value)) 
    { 
    return(true); 
    } 
    return(false); 
} 
+2

除HTTP,HTTP和FTP之外,还有很多其他方案(例如文件)。主机名不必以* www *开头,并且URL可以包含端口号(例如:80)。 – RobG 2011-05-31 04:30:55

+0

谢谢,但有一个问题,当我输入www.google它也得到有效的url我怎么可以避免这 – 2011-05-31 04:31:04

+0

我改变了正则表达式。现在请检查。 – 2011-05-31 04:34:37

4
<?php 
$url = "http://www.example.com"; 

if(!filter_var($url, FILTER_VALIDATE_URL)) 
    { 
    echo "URL is not valid"; 
    } 
else 
    { 
    echo "URL is valid"; 
    } 
?> 
1

如何试图像http://phpjs.org/functions/parse_url:485这是基于史蒂夫Levithan的精心测试,标准意识parseUri功能。

+0

或者类似的东西:'ntfs:// foo。[email protected]:/what/the/home.dtb事情=无论&种=鹅#beak' – RobG 2011-05-31 05:20:38

0
<?php 
// PHP 5.3.5-1ubuntu7.2 
$url = "http://www.example.com:80i/"; // Yes, I have an "i" after port 80, then is not a valid URL 

if (filter_var($url, FILTER_VALIDATE_URL)) { 
    echo "URL is valid"; 
} else { 
    echo "URL is NOT valid"; 
} 

$url = parse_url($url); 

echo $url['port']; // Returns 80 (without the "i") 

// BUG... 
?> 

使用filter_var与FILTER_VALIDATE_URL不验证正确