更新降价链接中的href

时间:2019-03-19 15:55:27

标签: javascript regex

我了解这是一个琐碎的正则表达式问题。但这也许不仅对我有用。

我有markdown文件,我需要更新其链接。降价链接的格式为[TITLE](HREF)。我有模式/\[*\]\(.*?\)/,但返回错误结果](HREF)

const line = 'Markdown text [link title](/link/href/name.md#anchor)'
const res = line.match(/\[*\]\(.*?\)/gm);
console.log(res);
  

那么如何只得到HREF(例如,应该是/link/href/name.md#anchor

2 个答案:

答案 0 :(得分:2)

您可以使用

const line = 'Markdown text [link title](/link/href/name.md#anchor)'
const reg = /\[[^\][]*\]\(([^()]*)\)/g;
let m, res = [];
while (m = reg.exec(line)) {
    res.push(m[1]);
}
console.log(res);

/\[[^\][]*\]\(([^()]*)\)/g正则表达式匹配:

  • \[-一个[字符
  • [^\][]*-除[]以外的0个或更多字符
  • \]-一个]字符
  • \(-一个(字符
  • ([^()]*)-第1组:除()以外的任何0+个字符
  • \)-一个)字符。

您可以使用最新的ECMAScript实现

const line = 'Markdown text [link title](/link/href/name.md#anchor)'
console.log(line.match( /(?<=\[[^\][]*\]\()[^()]*(?=\))/g ));

答案 1 :(得分:0)

您可以使用以下模式:\([^\)]+\)$

\(-从字面上匹配(

[^\)]+匹配)以外的一个或多个字符

\)-从字面上匹配)

$-匹配字符串的结尾

Demo