Как заменить часть хоста URL-адреса с помощью регулярного выражения javascript. Это может быть любой вид URL с http или без http. Предположим, этот текст взят из содержимого файла json.

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"
   }
}

Ожидая решения, как:

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"
    }
}

Я нашел то же самое здесь, но это регулярное выражение не будет работать в JavaScript.

Примечание: я ищу Regex.

10
sith 11 Янв 2017 в 06:57

3 ответа

Лучший ответ

Вы можете использовать функцию 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'
16
Gomino 21 Июл 2017 в 12:18

Я думаю, что это вполне выполнимо с помощью регулярных выражений. Вот небольшой фрагмент для вас, дайте мне знать, если вы хотите добавить что-то еще к нему.

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"

0
Mukul Jain 11 Янв 2017 в 06:55

Это может быть легко достигнуто с помощью:

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

Вы можете изменить это с лучшей практикой.

2
sith 11 Янв 2017 в 04:40