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')
添加回答
举报