首页 > 解决方案 > Node.js 正则表达式删除 url 中的撇号

问题描述

我需要替换字符串中的所有撇号,只有 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,但我不知道如何只选择和替换撇号

标签: javascriptnode.jsregexnodes

解决方案


假设您在 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);


推荐阅读