
DNS规定,域名中的标签由英文字母和数字组成,每个标签不超过63个字符js网址正则表达式,并且不区分大小写字母. 除连字符(-)以外,标签中不能使用其他标点符号. 级别最低的域名写在最左边,级别最高的域名写在最右边. 由多个标签组成的完整域名总数不能超过255个字符. 因此,请确认URL URL可以是常规的
方法一:
function checkUrl(urlString){
if(urlString!=""){
var reg=/(http|ftp|https)://[w-_]+(.[w-_]+)+([w-.,@?^=%&:/~+#]*[w-@?^=%&/~+#])?/;
if(!reg.test(urlString)){
alert("不是正确的网址吧,请注意检查一下");
}
}
}
方法二: 推荐
function IsURL(str_url){
var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
+ "(([0-9]{1,3}.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+ "|" // 允许IP和DOMAIN(域名)
+ "([0-9a-z_!~*'()-]+.)*" // 域名- www.
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." // 二级域名
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
var re=new RegExp(strRegex);
//re.test()
if (re.test(str_url)){
return (true);
}else{
return (false);
}
}
var testUrl;
testUrl="http://harveyzeng.iteye.com/blog/1776991";
//var testUrl="http://www.jb51.net/article/1.htm";
alert(IsURL(testUrl));
我刚刚找到了一个很好的测试功能代码:
<script>
/**
* 正则表达式判断网址是否有效
*/
(function(){
"use strict";
var urlDict=[
//Bad Case
'www.baidu.com', //常规网址,未带协议头的地址
'w.baidu.com', //常规网址,短子域名
'baidu.com', //常规网址,仅有主域名
'测试.com', //非常规合法网址,中文域名不在参考之列
'1.2', //错误域名
' WWWW ', //无效字符串
'111测试', //无效字符串
//Correct Case
'http://baidu.com', //常规网址,仅有主域名
'http://www.baidu.com', //常规网址,带子域名
'https://www.baidu.com/', //常规网址,使用https协议头,带根目录
'http://www.baidu.com/api', //常规网址,有一级目录下资源
'http://www.subdomain.baidu.com/index/subdir', //常规网址,多级子域名,多级目录
'http://www.www.subdomain.baidu.com/index/subdir/',//常规网址,多级子域名,多级目录,目录地址闭合
'http://io.io' //非常规网址,多级子域名,多级目录,目录地址闭合
];
// 建议的正则
function isURL(str){
return !!str.match(/(((^https?:(?://)?)(?:[-;:&=+$,w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,w]+@)[A-Za-z0-9.-]+)((?:/[+~%/.w-_]*)???(?:[-+=&;%@.w_]*)#?(?:[w]*))?)$/g);
}
// 不知道谁写的简单版的坑爹正则
function badRegFn(str){
return !!str.match(/(http[s]?|ftp)://[^/.]+?..+w$/g);
}
//jb51
function IsURL(str_url){
var strRegex = "^((https|http|ftp|rtsp|mms)?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
+ "(([0-9]{1,3}.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
+ "|" // 允许IP和DOMAIN(域名)
+ "([0-9a-z_!~*'()-]+.)*" // 域名- www.
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." // 二级域名
+ "[a-z]{2,6})" // first level domain- .com or .museum
+ "(:[0-9]{1,4})?" // 端口- :80
+ "((/?)|" // a slash isn't required if there is no file name
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
var re=new RegExp(strRegex);
//re.test()
if (re.test(str_url)){
return (true);
}else{
return (false);
}
}
// 测试用例覆盖
(function(){
var ret={};
var collect=function(link){
var obj={},fnList=[isURL,badRegFn,IsURL];
for(var i=0,j=fnList.length;i<j;i++){
var fn=fnList[i];
obj[fn.name]=fn.call(null,link);
}
return obj;
};
for(var i=0,j=urlDict.length;i<j;i++){
ret[urlDict[i]]=collect(urlDict[i]);
}
console.log(ret),console.table(ret);
}());
}());
</script>
跑步后js网址正则表达式,通过chorme的F12检查效果

上面的介绍主要是js函数的编写和判断方法. 以下是小编组织的验证URL上的一些正则表达式. 你可以参考
正则表达式
(http | ftp | https): // [w-_] + [. [w-_] +)+([w-. ,@?^ =%&: /〜+#] * [w-@?^ =%&/〜+#])?

匹配
|
不匹配
正则表达式
^ \ {2} [w-] + \(([w-] [ws] * [w-] + [$$]?$)|([w-] [$$]?$))
匹配
\ serverservice | \服务器服务| \ serv_001service $
不匹配
\我的服务器服务| \服务器服务| \服务器$服务
正则表达式
^(http | https | ftp): // [[[a-zA-Z0-9.-] +(: [a-zA-Z0-9. &%$-] +)* @)? ((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-] +. [a-zA-Z] {2,4})(: [0-9] +)? (/ [^ /] [a-zA-Z0-9. ,?'\ / +&%$#=〜_- @] *)* $
匹配

|的ftp: //用户: pass@host.com: 123
不匹配
sysrage.net
正则表达式
^([a-zA-Z]: | \\ [^ / \: *?“ <> |] + \ [^ / \: *?” <> |] +)(\ [^ / \ : *?“ <> |] +)+(. [^ / \: *?” <> |] +)$
匹配
c: Test.txt | \ serversharedTest.txt | \ serversharedTest.t
不匹配
c: 测试| \ servershared | \ serversharedTest. ?
正则表达式
^(http | https | ftp): // [[a-zA-Z0-9.-] +(: [a-zA-Z0-9. &%$-] +)* @)*( (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 |名称|职业|航空|合作|博物馆| [a-zA-Z] {2}))(: [0-9] +)*(/($ | [a-zA-Z0-9. ,?'\ +&%$#=〜_-] +))* $
匹配

| | ftp: //用户: pass@site.com: 21 / file / dir
不匹配
site.com |
正则表达式
^([a-zA-Z] :)(\ [^ \ /: *?<>“ |] *(?<![]))*(. [a-zA-Z] {2, 6})$
匹配
C: di ___ rfi_sysle.txt | c: dirfilename.txt
不匹配
c: dirfile? name.txt
正则表达式
^([a-zA-Z0-9]([a-zA-Z0-9-] {0,61} [a-zA-Z0-9])?. )+ [a-zA-Z ] {2,6} $
匹配

regexlib.com |这是一个博物馆| 3com.com
不匹配
notadomain-.com | helloworld.c | .oops.org
正则表达式
^((((ht | f)tp(s?)): //)? (| [a-zA-Z]. )[a-zA-Z0-9-. ] +. (com | edu | gov | mil | net | org | biz |信息|名称|博物馆|我们| ca |英国)(: [0-9] +)*(/($ | [a-zA-Z0-9 . ,;?'\ +&%$#=〜_-] +))* $
匹配
: 8103 | | #blah
不匹配
|
正则表达式
b(([[w-] +: //?| www [. ]))[^ s()<>] +(?: ([wd] +)|([^ [: punct: ] s] | /)))
匹配
| | (类似)| (维基百科)| (类似(维基百科))| | | <; | <; |,| | | rdar: // 1234 | rdar: / 1234 |: 密码@示例. com: 8080 |@example.com | @ example.com: 8080 |: password@example.com
不匹配
no_ws.example.com | no_proto_or_ws.com | /relative_resource.php
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-210249-1.html
01用自己流量只能微信qq了
舰艇再多管比用
我也遇到过一次