Tôi đã tìm kiếm tất cả để tìm câu trả lời cho điều này và tất cả các câu trả lời tôi đã tìm thấy chưa có trong JavaScript.
Tôi cần một cách, trong JavaScript, để kiểm tra xem một chuỗi bắt đầu bằng HTTP, HTTPS hoặc FTP. Nếu nó không bắt đầu với một trong những người tôi cần phải chuẩn bị cho chuỗi với //
. Indexof sẽ không làm việc cho tôi Tôi không nghĩ vì tôi cần HTTP, HTTPS hoặc FTP. Ngoài ra, tôi không muốn một cái gì đó như
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 `//${newUrl}`;
}
return newUrl;
};
0 kích hoạt đó là hợp lệ vì nó không bắt đầu với HTTP trong khi Indexof sẽ kích hoạt điều đó là đúng [nếu tôi không hoàn toàn nhầm].Php regex gần nhất mà tôi đã tìm thấy là:
function addhttp[$url] {
if [!preg_match["~^[?:f|ht]tps?://~i", $url]] {
$url = "//" . $url;
}
return $url;
}
Nguồn: Cách thêm HTTP nếu nó không tồn tại trong URL
Tôi chỉ không biết làm thế nào để chuyển đổi nó thành JavaScript. Mọi sự trợ giúp sẽ rất được trân trọng.
hỏi ngày 2 tháng 7 năm 2012 lúc 20:45Jul 2, 2012 at 20:45
2
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 `//${newUrl}`;
}
return newUrl;
};
Tests:
expect[getValidUrl['//www.test.com']].toBe['//www.test.com'];
expect[getValidUrl['//www.test.com']].toBe['//www.test.com'];
expect[getValidUrl[' http : / / www.test.com']].toBe['//www.test.com'];
expect[getValidUrl['ftp://www.test.com']].toBe['ftp://www.test.com'];
expect[getValidUrl['www.test.com']].toBe['//www.test.com'];
expect[getValidUrl['://www.test.com']].toBe['//www.test.com'];
expect[getValidUrl['http%3A%2F%2Fwww.test.com']].toBe['//www.test.com'];
expect[getValidUrl['www . test.com']].toBe['//www.test.com'];
GROVER.
3.7901 Huy hiệu vàng17 Huy hiệu bạc61 Huy hiệu đồng1 gold badge17 silver badges61 bronze badges
Đã trả lời ngày 2 tháng 7 năm 2012 lúc 20:51Jul 2, 2012 at 20:51
user123444555621user123444555621user123444555621
Phù bằng vàng 144K2727 gold badges110 silver badges125 bronze badges
2
Điều này sẽ hoạt động:
var pattern = /^[[http|https|ftp]:\/\/]/;
if[!pattern.test[url]] {
url = "//" + url;
}
JSfiddle
Đã trả lời ngày 2 tháng 7 năm 2012 lúc 20:50Jul 2, 2012 at 20:50
Tskuzzytskuzzytskuzzy
35.3K14 Huy hiệu vàng70 Huy hiệu bạc137 Huy hiệu đồng14 gold badges70 silver badges137 bronze badges
0
var url = "//something.com"
if[ url.indexOf["http"] == 0 ] {
alert["yeah!"];
} else {
alert["No no no!"];
}
Đã trả lời ngày 2 tháng 7 năm 2012 lúc 20:50Jul 2, 2012 at 20:50
Tskuzzytskuzzynicowernli
35.3K14 Huy hiệu vàng70 Huy hiệu bạc137 Huy hiệu đồng23 silver badges34 bronze badges
3
nicowernlinicowernli
3.14323 Huy hiệu bạc34 Huy hiệu đồngCách khai báo không phải là REGEX:May 12, 2020 at 8:46
const hasValidUrlProtocol = [url = ''] =>
['//', '//', 'ftp://'].some[protocol => url.startsWith[protocol]]
ShotaĐã trả lời ngày 12 tháng 5 năm 2020 lúc 8:468 gold badges35 silver badges64 bronze badges
1
Điều này sẽ hoạt động:
var re = /^[http|https|ftp]/
JSfiddleJul 2, 2012 at 20:49
Đã trả lời ngày 2 tháng 7 năm 2012 lúc 20:50elclanrs
Tskuzzytskuzzy21 gold badges132 silver badges169 bronze badges
35.3K14 Huy hiệu vàng70 Huy hiệu bạc137 Huy hiệu đồng
var pattern = new RegExp['^[https?|ftp]://'];
if[!pattern.test[url]] {
url = "//" + url;
}
var pattern = new RegExp['^[https?|ftp]://'];
console.log[pattern.test['//foo']];
console.log[pattern.test['//foo']];
console.log[pattern.test['ftp://foo']];
console.log[pattern.test['bar']];
nicowernlinicowernliJul 17, 2019 at 14:06
3.14323 Huy hiệu bạc34 Huy hiệu đồngSteven Spungin
Cách khai báo không phải là REGEX:5 gold badges77 silver badges68 bronze badges