使用Javascript检查字符串是否以http开头
我一直在搜索这个问题的答案,但我找到的所有答案都不是JavaScript 我需要一种javascript方法来检查字符串是否以http、https或ftp开头。如果不是以其中一个开头,我需要在字符串前面加上使用Javascript检查字符串是否以http开头,javascript,regex,Javascript,Regex,我一直在搜索这个问题的答案,但我找到的所有答案都不是JavaScript 我需要一种javascript方法来检查字符串是否以http、https或ftp开头。如果不是以其中一个开头,我需要在字符串前面加上http://。indexOf对我不起作用,我不认为我需要http、https或ftp。我也不想要像google.com/?q这样的东西=http://google.com触发它是有效的,因为它不是以http开头的,而indexOf会触发它是真的(如果我没有完全弄错的话) 我找到的最接近PHP
http://
。indexOf对我不起作用,我不认为我需要http、https或ftp。我也不想要像google.com/?q这样的东西=http://google.com
触发它是有效的,因为它不是以http开头的,而indexOf会触发它是真的(如果我没有完全弄错的话)
我找到的最接近PHP正则表达式如下:
function addhttp($url) {
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return $url;
}
我只是不知道如何将其转换为javascript。非常感谢您的帮助。这应该可以:
var re = /^(http|https|ftp)/
var pattern = /^((http|https|ftp):\/\/)/;
if(!pattern.test(url)) {
url = "http://" + url;
}
这应该起作用:
var re = /^(http|https|ftp)/
var pattern = /^((http|https|ftp):\/\/)/;
if(!pattern.test(url)) {
url = "http://" + url;
}
测试:
expect(getValidUrl('https://www.test.com')).toBe('https://www.test.com');
expect(getValidUrl('http://www.test.com')).toBe('http://www.test.com');
expect(getValidUrl(' http : / / www.test.com')).toBe('http://www.test.com');
expect(getValidUrl('ftp://www.test.com')).toBe('ftp://www.test.com');
expect(getValidUrl('www.test.com')).toBe('http://www.test.com');
expect(getValidUrl('://www.test.com')).toBe('http://www.test.com');
expect(getValidUrl('http%3A%2F%2Fwww.test.com')).toBe('http://www.test.com');
expect(getValidUrl('www . test.com')).toBe('http://www.test.com');
我进一步完善了前面的答案,使用了
newregexp(…)
来避免混乱的转义,还添加了可选的s
var pattern=newregexp('^(https?| ftp)://');
如果(!pattern.test(url)){
url=“http://”+url;
}
var pattern=newregexp('^(https?| ftp)://');
console.log(模式测试)http://foo'));
console.log(模式测试)https://foo'));
console.log(模式测试)ftp://foo'));
console.log(模式测试('bar'))代码>非正则表达式声明方式:
const hasValidUrlProtocol = (url = '') =>
['http://', 'https://', 'ftp://'].some(protocol => url.startsWith(protocol))
javascript和java deletedpossible duplicate of javascript和java deletedpossible duplicate of I建议添加对“url”值的检查,以避免在未提供值(或空)字符串时返回“http://”:如果(url&&&!//^(f|ht)tps?:\//\//I.test(url))我总是返回“未定义”字符串。你能提供一个codepen或jsfiddle吗?如果你有空间http
的话,就把url修剪一下,这样就有问题了:p如果url像:“javascript://somethinghttp.com“在这种情况下并不重要,因为问题是“如何知道字符串是否以http开头”,这是一个很好的答案+1表示声明性!但是您需要这里的布尔值吗?.some()
是否已返回布尔值?是的,您是对的!