#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
.