如何在Markdown字符串中更改图像URL

4
我正在开发一个基于Node.js的CMS,在其中用户可以在本地使用Markdown编写博客文章,上传后我们会将文章处理成HTML文件。有时候用户可能会添加一些图片,比如my dog.jpg,他们需要复制图片并添加以下代码到文章中:
![a picture of my dog](my dog.jpg)

我使用uslug将所有文件名转换为my dog.jpg变成my-dog.jpg。然而,我还需要使用uslug更新博客文章中的链接,因为a)否则链接会失效,因为我们刚刚更改了文件名;b)因为大多数节点的Markdown解析器将跳过上述图像语法,因为有空格(虽然在许多本地Markdown编辑器(如Mou)中可以预览该图像。

有人知道我如何使用正则表达式实现这一点吗?

1个回答

13

你需要很多斜线:

string.replace(/(!\[.*?\]\()(.+?)(\))/g, function(whole, a, b, c) {
    return a + addDashesOrWhatever(b) + c;
});

那确实选择了URL,但它也选择了![](部分(我无法将其切掉并附加回去,因为有可选的alt)。有可能仅选择图像标签内的URL吗? - askmike
你也可以将前缀和后缀放入捕获组中,然后分别访问它们并连接结果。我已经更新了答案。 - Hubert OG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接