How to replace host part of a URL using javascript

2019-05-19 17:40发布

How to replace the host part of a URL using javascript regex. This can be any kind of URL with or without http. Assume this text is from the content of a json file.

OldText:

{
   "auth" : {
     "login" : "http://local.example.com:85/auth/signin",
     "resetpass" : "http://local.example.com:85/auth/resetpass",
     "profile" : "http://local.example.com/auth/profile"
   }
}

Expecting a solution like:

var NewText = OldText.replace (/(some regex)/g, 'example.com');

To get NewText as:

{
  "auth" : {
     "login" : "http://example.com:85/auth/signin",
     "resetpass" : "http://example.com:85/auth/resetpass",
     "profile" : "http://example.com/auth/profile"
    }
}

I found the same here, but that regex won't work in javascript.

Note: I'm looking for the Regex.

3条回答
甜甜的少女心
2楼-- · 2019-05-19 17:53

This could be achieved easily using:

var NewText = OldText.replace (/(https?:\/\/)(.*?)(:*)/g, '$1' + 'example.com' + '$3'); 

You are welcome to modify this with the best practice.

查看更多
Root(大扎)
3楼-- · 2019-05-19 18:07

I think this is completely doable using regex. Here's a small snippet for you, let me know if you want to add something else to it.

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);
}

I am assuming, from

without http

, you mean something like 'google.com'

查看更多
Fickle 薄情
4楼-- · 2019-05-19 18:10

You can use the URL function and set a new hostname:

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'
查看更多
登录 后发表回答