JavaScript - 替换字符串包含旧字符串,因此替换自身

标签 javascript url replace

当在浏览器中使用此 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/

相关文章:

php - 尝试插入负数时 drupal db_query 不起作用

javascript - 2014 年 RequireJS 与 Backbone、Underscore 和 jQuery 的依赖关系

javascript - 如何在全局变量中存储 $.getJSON 对象并稍后浏览它

javascript - 我可以使用什么 jQuery 选择器来仅选择事件的自定义复选框?

iOS - 使用 URL 方案打开某些 View Controller

java - java中从URL获取页面内容

python - 如何在python中用空字符串替换反斜杠字符

javascript - 使用文件系统 api 检索所有目录

url - 从openFrameworks中的URL加载声音文件

python - 为什么 max() 有时返回 nan 有时忽略它?