gpt4 book ai didi

javascript - 使用 Javascript 检查字符串是否以 http 开头

转载 作者:IT王子 更新时间:2023-10-29 03:16:14 41 4
gpt4 key购买 nike

我一直在到处寻找这个问题的答案,但我发现的所有答案都不是用 JavaScript 编写的。

我需要一种在 javascript 中检查字符串是否以 http、https 或 ftp 开头的方法。如果它不是以其中之一开头,我需要在字符串前添加 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;
}

Source: How to add http if its not exists in the url

我只是不知道如何将其转换为 javascript。任何帮助将不胜感激。

最佳答案

export const getValidUrl = (url = "") => {
let newUrl = window.decodeURIComponent(url);
newUrl = newUrl.trim().replace(/\s/g, "");

if(/^(:\/\/)/.test(newUrl)){
return `http${newUrl}`;
}
if(!/^(f|ht)tps?:\/\//i.test(newUrl)){
return `http://${newUrl}`;
}

return newUrl;
};

测试:

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');

关于javascript - 使用 Javascript 检查字符串是否以 http 开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300906/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com