Javascript 条件替换不起作用

Javascript条件替换图像src到https,如果url前缀是 http:// 并忽略 https:// 目前我已经将这段代码添加到源部分。

Javascript:

src="' + p.replace("http","https") + '"

问题:

http://得到替换,但问题是它也替换它正在破坏src属性和图像返回404错误。如何解决此问题?https://https://httpss://

更新:

该变量包含图像URL,有时是http,有时是其https。上面的代码成功地将http替换为https,但是当一个url有https时,它会添加另一个这样的s,返回404并且图像无法加载phttpss://


ibeautiful
浏览 164回答 4
4回答

慕妹3242003

只需展开选择,即可替换而不是仅替换 ,即:http://httpp.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()protocolconst 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());})

慕无忌1623718

它工作正常。但是你能定义你的代码,为什么你添加双引号吗?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);

www说

它不起作用,因为匹配字符串 是替换字符串 的子集。所以你需要建议不要匹配字符串,或者你可以说只有匹配没有后面的东西。httphttpshttpshttpsconst 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") )})

当年话下

您应该使用正则表达式进行匹配。检查 url 是否使用 http 的正则表达式是:  /http[^(?=s)]{0}/i下面是成功将 http 替换为 https 的工作代码段。"http://www.google.com".replace(/http[^(?=s)]{0}/i,'https')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript