【发布时间】:2021-03-26 11:57:26
【问题描述】:
我有以下字符串,
Some text  \n some text  some other text \n 
我想将所有相对图像路径(即 assets/image1.png 替换为 https://example.com/assets/image1.png 和 assets/image3.png 相同)。但是我们需要忽略https://example.com/assets/image2.png,因为它已经是绝对路径了。
到目前为止,我已经能够做到以下几点,
const getImagesWithAbsolutePath = (text, absolutePathPrefix) => {
if (!text) return ''
const regex = /(\!\[.*\]\()(.*)(\))/g
return text.replace(regex, '$1' + absolutePathPrefix + '/$2?raw=true$3')
}
myText = "Some text  \n some text  some other text \n ";
myDomain = "https://example.com";
console.log(getImagesWithAbsolutePath(myText, myDomain));
如你所见,输出是,
Some text 
some text  some other text

但我需要的结果是,
Some text 
some text  some other text

【问题讨论】:
-
使用惰性点 (
/(\!\[.*?\]\()(.*?)(\))/g) 或否定字符类。 -
@WiktorStribiżew 谢谢,它不起作用。返回相同的结果。
-
除了这个问题不重复。我已经看到了这个问题,它实际上并没有帮助。谢谢。
-
对,你需要随意匹配主机。
-
无论如何,您确实需要在模式中使用惰性点/否定字符类来处理同一行上的多个匹配项。起初我被骗了,因为我没有在您的示例字符串文字中发现所有
\n。将您处理的文字也添加到问题中是个好主意,但代码也总是很好,当然。
标签: javascript regex string