Переписать префикс URL с использованием Javascript / Jquery - PullRequest
4 голосов
/ 11 июля 2019

Я получаю некоторые данные из внешнего API, используя javascript, затем я отображаю эти данные на HTML-странице.

В этих возвращенных данных есть URL-адрес, который имеет следующий формат:

var url = https://img.evbuc.com/moreStuff

Мне нужно переписать этот URL-адрес, чтобы он начинался с префикса www, например,

var url = https://www.img.evbuc.com/moreStuff

Я хочу добиться этого, используя либо javascript, либо jquery.

Как этого добиться?Объяснение правильного кода тоже было бы здорово.

Ответы [ 4 ]

2 голосов
/ 11 июля 2019

Вам не нужно регулярное выражение для этого, вы можете просто использовать URL API

let url = "https://img.evbuc.com/moreStuff"

let parsed = new URL(url)

parsed.host = parsed.host.startsWith('www.') ? parsed.host : "www."+ parsed.host

console.log(parsed)
1 голос
/ 11 июля 2019

Если вы хотите что-то, что будет работать с любым протоколом, попробуйте это регулярное выражение:

var url = "https://img.evbuc.com/moreStuff"
var new_url = url.replace(/^([a-zA-Z][a-zA-Z0-9\.\+\-]*):\/\//, "$1://www.")
console.log('new URL: ', new_url)
1 голос
/ 11 июля 2019

Вы можете использовать регулярное выражение для поиска и замены.

Следующий пример также работает с:

function prependUrl(url) {
  return url.replace(/^([^\/]*)(\/\/)(.*)/, '$1//www.$3');
}

const urls = [
    'https://img.evbuc.com/moreStuff',
    'http://img.evbuc.com/moreStuff',
    '//img.evbuc.com/moreStuff',
    'https://img.evbuc.com/moreStuff//someMoreStuff'
];

urls.forEach((url) => console.log(`${ url } -> ${ prependUrl(url) }`));
  • Регулярное выражение содержит 3 группы захвата:

    1. Выберите все до первого / (исключая)
    2. Выберите // (для корневого протокола)
    3. Выберите остальные
  • Значение замены принимает все до первого / (который также может быть пустой строкой)

  • Заменить // на //www.
  • Добавить остальные
0 голосов
/ 11 июля 2019

Простые строковые операции:

var url = 'https://img.evbuc.com/moreStuff'
var newUrl = url.split('//')[0] + '//www.' + url.split('//')[1]
console.log(newUrl)

и еще один способ сделать это так:

var url = 'https://img.evbuc.com/moreStuff'
var newUrl = url.replace('https://', 'https://www.')
console.log(newUrl)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...