如何使用 javascript 正则表达式替换 URL 的主机部分
Posted
技术标签:
【中文标题】如何使用 javascript 正则表达式替换 URL 的主机部分【英文标题】:How to replace host part of a URL using javascript regex 【发布时间】:2017-05-25 17:53:51 【问题描述】:如何使用 javascript 正则表达式替换 URL 的 主机部分。这可以是带有或不带有 http 的任何类型的 URL。假设此文本来自 json 文件的内容。
旧文本:
"auth" :
"login" : "http://local.example.com:85/auth/signin",
"resetpass" : "http://local.example.com:85/auth/resetpass",
"profile" : "http://local.example.com/auth/profile"
期待这样的解决方案:
var NewText = OldText.replace (/(some regex)/g, 'example.com');
获取 NewText 为:
"auth" :
"login" : "http://example.com:85/auth/signin",
"resetpass" : "http://example.com:85/auth/resetpass",
"profile" : "http://example.com/auth/profile"
我找到了相同的 here,但该正则表达式在 javascript 中不起作用。
注意:我正在寻找正则表达式。
【问题讨论】:
您是否特别需要使用正则表达式?如果您需要从 javascript 更新 url,您可能会重新分配window.location.host
。 Reference
【参考方案1】:
您可以使用 URL 功能并设置新的主机名:
var oldUrl = "http://host1.dev.local:8000/one/two";
var url = new URL(oldUrl);
url.hostname = 'example.com';
url.href //'http://example.com:8080/one/two'
【讨论】:
Edge、IE 11 和 Safari 不支持此功能【参考方案2】:这可以通过以下方式轻松实现:
var NewText = OldText.replace (/(https?:\/\/)(.*?)(:*)/g, '$1' + 'example.com' + '$3');
欢迎您使用最佳实践来修改它。
【讨论】:
我认为正确的正则表达式模式应该是:/(https?:\/\/)(.*?)(\/.*)/g
【参考方案3】:
我认为使用正则表达式是完全可行的。 这是给你的一个小sn-p,如果你想添加其他东西,请告诉我。
var urls = [
url: "http://local.something.com:85/auth/signin"
,
url: "local.anything.com/auth/profile"
];
for(var i in urls)
var newUrl = urls[i].url.replace(/(http:|)(^|\/\/)(.*?\/)/g, 'https://example.com/');
console.log(newUrl);
我假设,来自
没有http
,你的意思是“google.com”之类的东西
【讨论】:
以上是关于如何使用 javascript 正则表达式替换 URL 的主机部分的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PHP 中使用正则表达式转换标记 (\u \l \U \L \E)?
如何替换 Javascript 中的正则表达式子字符串匹配?
javascript正则表达式如何替换一个字符串的两头固定字符