我需要检查提供的URI是否有效,此URI可以是主机名,localhost,IP地址,带端口的主机名。
这是我目前的正则表达式:
isValidURI = function(uri){
return new RegExp("^((cc:|https:|http:|[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.])*)$", 'g').test(uri);
}
var urls = [
'http://localhost',
'http://localhost.com',
'http://www.localhost.com',
'http://www.localhost.com:8080',
'cc://custom.Data',
'https://www.localhost.com',
'https://localhost',
'http://local host ',
'localhost',
'notvalid',
'http://sjc1dsppf09.crd.ge.com:9090/service/dummydata/bar'
];
for( var i=0; i < urls.length; i++){
var valid = isValidURI(urls[i]);
if(valid){
console.log( urls[i] + ' - [isValid = ' + valid + ']')
} else {
console.error( urls[i] + ' - [isValid = ' + valid + ']')
}
}
这是输出:
"http://localhost - [isValid = true]"
"http://localhost.com - [isValid = true]"
"http://www.localhost.com - [isValid = true]"
"http://www.localhost.com:8080 - [isValid = false]"
"cc://custom.Data - [isValid = true]"
"https://www.localhost.com - [isValid = true]"
"https://localhost - [isValid = true]"
"http://local host - [isValid = false]"
"localhost - [isValid = false]"
"notvalid - [isValid = false]"
"http://sjc1dsppf09.crd.ge.com:9090/service/dummydata/bar - [isValid = false]"
我需要使用以下网址:端口有效,我做错了什么?
这是JSBin的链接。
答案 0 :(得分:1)
没有检查冒号:
,以下通过测试
new RegExp("^((cc:|https:|http:|[/][/]|www.)([a-z]|[A-Z]|[:0-9]|[/.])*)$", 'g').test(uri);
答案 1 :(得分:1)
new RegExp("^(cc|https?)://([a-zA-Z\.]*(:[0-9]*)?(?:/[a-zA-Z0-9]*)*)?$", 'g').test(uri);
如果您需要http://sjc1dsppf09.crd.ge.com:9090/service/dummydata/bar
有效,请使用:
new RegExp("^(cc|https?)://([a-zA-Z0-9.](:[0-9])?(?:/[a-zA-Z0-9]))?$", 'g').test(uri);
如果您需要能够使用www。如果没有协议,则用
(?:(cc|https?):|www.)
替换第一组