在创建一个验证用户URL并在前面添加http:的函数时,我必须考虑www,https和//的情况作为有效网址。我现在编写的方式(见下文),我只提前http :,所以 // stackoverflow.com 的情况不会变成 http://// stackoverflow。 COM
这意味着像stackoverflow.com这样的网址会变成 http:stackoverflow.com 。
在Firefox和Chrome中,这很好用,但这些URL会从各种浏览器和设备中点击。 它是否会普遍起作用?对于//案例重写此检查很容易,但我对答案很感兴趣。
前置方法:
function prependHTTPtoWebURL() {
var url = (el('org_website').value);
var httpVar;
var testFor;
if (url) {// If there's a website URL value
testFor = url.toLowerCase();
if (testFor.indexOf("http") != 0){
httpVar = 'http:'; //add it
url = httpVar + url;
el('org_website').value = url;
}
}
}
答案 0 :(得分:3)
尝试使用正则表达式。例如,检查此代码:
var someurl = "www.google.com";
var otherurl = "google.com";
var anotherurl = "//google.com";
function prependHTTPtoWebURL(url) {
var newurl = url.replace(/^(http)?(:)?(\/\/)?/i,'');
return 'http://' + newurl;
}
console.log(prependHTTPtoWebURL(someurl));
console.log(prependHTTPtoWebURL(otherurl));
console.log(prependHTTPtoWebURL(anotherurl));
console.log中的输出将是:
http://www.google.com
http://google.com
http://google.com
由于您在第一个子域(www)上指定了子域(www),因此该域名受到尊重。它避免以四个对角线结束,例如http:////
。如果您的网址类似:google.com
,那么它也会正确修复。
你可以在这里看到它:http://jsfiddle.net/zRBUj/
编辑:添加提到的/i
Kate。
答案 1 :(得分:0)