当在浏览器中使用此 JavaScript 时:
var url = window.location.toString();
window.location = url.replace(/.com/, '.com.nyud.net').replace(/.net/, '.net.nyud.net');
导致以 .com 结尾的网站(以及包含的其他 TLD)发生这种情况:
来自
website.com/123
至
website.com.nyud.net.nyud.net/123
虽然它可以在以 .net 结尾的网站上正常工作:
来自
website.net/abc
至
website.net.nyud.net/abc
如何调整它才能正常工作?
最佳答案
发生这种情况是因为 .com.nyud.net
中的 .net
被替换为 .com.nyud.net
。
要解决此问题,请使用一个正则表达式替换所有 TLD。
window.location = url.replace(/\.(com|net|org)(?=$|\/|\?)/, '.$1.nyud.net');
我对正则表达式进行了一些修改,以便它使用反向引用将 TLD 添加到替换字符串中。它还确保 .com
后跟字符串结尾或 /
,因此它与 www.company.net 之类的内容不匹配
.
更新:已修复以正确替换 website.com/123
等 URL。
关于JavaScript - 替换字符串包含旧字符串,因此替换自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717463/