Node.js регулярное выражение удаляет апострофы внутри URL-адресов

#javascript #node.js #regex #nodes

#javascript #node.js #регулярное выражение #узлы

Вопрос:

Мне нужно было бы заменить все апострофы внутри моих строк, должны остаться только те, которые указаны в теге href =» «, апостроф снаружи.

Я использую node.js .

Вот моя строка:

 This is an example text. I'd love to fix this. 

<a href="https://www.example.com/i'd-love-to-fly/"> I'd love to fly link </a> 

Inside the text there could be more urls 

<a href="https://www.example.com/i'd-rather/">I'd rather link</a>. 
 

например

 <a href="https://www.example.com/i'd-love-to-fly/"> I'd love to fly link </a> 
 

должно быть

 <a href="https://www.example.com/id-love-to-fly/"> I'd love to fly link </a> 

 

Я пытаюсь использовать регулярное выражение

 /https[^"]  /
 

он выбирает весь URL-адрес, но тогда я не знаю, как выбрать и заменить только апостроф

Комментарии:

1. Разве вы не можете просто использовать replace? "https://www.example.com/i'd-love-to-fly/".replace("'","")

2. В моих строках есть не только URL-адрес, и я не знаю конкретного URL-адреса. Например, моя строка: example of my string with ', then there's a random url <a href="https://www.example.com/i'd-love-to-fly/"> I'd love to fly link </a>

Ответ №1:

Это будет сделано при условии, что у вас есть только одна одинарная кавычка внутри URL:

 (href="[^"] )'([^"] ")
 

https://regex101.com/r/6zRLSC/1

Если у вас есть несколько одинарных кавычек, цикл while может решить эту проблему.

  var string = `This is an example text. I'd love to fix this. 

<a href="https://www.example.com/i'd-love-to-fly-but-don't-like-heights/"> I'd love to fly but don't like heights link </a> 

Inside the text there could be more urls 

<a href="https://www.example.com/i'd-rather/">I'd rather link</a>.`;

// While we match the pattern that we're targeting, keep on replacing
while(string.match(/(href="[^"] )'([^"] ")/))
{
    string = string.replace(/(href="[^"] )'([^"] ")/g, '$1$2')
}

console.log(string); 

Комментарии:

1. большое вам спасибо! Просто глупый вопрос, переменные $ 1 и $ 2 в основном являются группами регулярных выражений?

2. @vamp правильно. В регулярном выражении я использовал круглые скобки для начала и конца ссылки, которая сохраняет данные в группу захвата для последующего использования; соответственно $1 и $2 .