4 回答

TA貢獻1824條經驗 獲得超6個贊
只需展開選擇,即可替換而不是僅替換 ,即:http://http
p.replace("http://", "https://")
請參閱下面的示例:
const urls = [
'https://example.com',
'http://example.com'
];
urls.forEach(url => {
console.log(`Original URL: ${url}`);
// Incorrect behavior
console.log(url.replace('http', 'https'));
// Correct behavior
console.log(url.replace('http://', 'https://'));
});
解決此問題的另一種方法是利用URL API,IE11之后的任何內容都支持該API。您只需使用構造函數解析字符串,然后修改其屬性,即:new URL()protocol
const urls = [
'https://example.com',
'http://example.com'
];
urls.forEach(url => {
console.log(`Original URL: ${url}`);
const modifiedUrl = new URL(url);
modifiedUrl.protocol = 'https';
console.log(modifiedUrl.toString());
})

TA貢獻1744條經驗 獲得超4個贊
它工作正常。但是你能定義你的代碼,為什么你添加雙引號嗎?
var p = 'http://google.com';
var src= p.replace("http","https");
console.log(src);
更新
請查看此更新的解決方案。
var p = prompt('Enter URL?');
let str = p.split("://")[0];
var src= str === 'http' ? p.replace("http","https") : p;
console.log(src);

TA貢獻1775條經驗 獲得超8個贊
它不起作用,因為匹配字符串 是替換字符串 的子集。所以你需要建議不要匹配字符串,或者你可以說只有匹配沒有后面的東西。httphttpshttpshttps
const urlVariants = [
'http://www.google.com',
'https://www.google.com'
]
urlVariants.forEach(url=> {
console.log( url, '->', url.replace('http:','https:') )
console.log( url, '->', url.replace(/http([^s])/,"https$1") )
})

TA貢獻1890條經驗 獲得超9個贊
您應該使用正則表達式進行匹配。檢查 url 是否使用 http 的正則表達式是:
/http[^(?=s)]{0}/i
下面是成功將 http 替換為 https 的工作代碼段。
"http://www.google.com".replace(/http[^(?=s)]{0}/i,'https')
添加回答
舉報