更改 marked.js image/link 表达式

change marked.js image/link expression

我需要更改marked.js图像表达。

原表达式为:/^\!?\[(inside)\]\(href\)(\w*\S*)*/ ---> ![]()

我需要获取所有图像的 id,所以我需要转换表达式以从中获取 id 值 ----> {>"id"<}![inside](href).

我尝试将表达式更改为如下所示:/^\{\>index\>\}\!?\[(inside)\]\(href\)(\w*\S*)*/

之后,我需要编写一个表达式来获取 {>index<}![inside](href)

的 "index" 值

内部和 href 的示例:

inline._inside = /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;
inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
inline._index = /(?:^\{\>[^\<\}]*\<\}|[^\{\>\<\}]|\<\}(?=[^\{\>]*\<\}))/; // I tryed this, but not works

//replacing

inline.link = replace(inline.link)
('inside', inline._inside)
('href', inline._href)
('index', inline._index)
();

谁能帮我构建这个表达式?

如果我没看错,你想从 link 中获取一些具有特定格式的数据,例如{>"id"<}![inside](href)and_the_rest

因此,目前 best regex I can suggest 可能看起来像 {>([^<]*)<}\!?\[([^]]+)\]\(([^)]*)\)(\w*\S*)*。它假定您在 >< 内有 "id","inside" 在 [] 内,"href" 在 ()一个接着一个。

function FindValues(str) {
  var re = /\{\>([^<]*)\<\}\!?\[([^\]]+)\]\(([^\)]*)\)(\w*\S*)*/; 
  var m;

  if ((m = re.exec(str)) !== null) 
  {
     return [m[1], m[2], m[3], m[4]];  
  }
}
  
var vls = FindValues('{>"id"<}![inside](href)and_the_rest');
document.getElementById('id').innerHTML = "ID: " +vls[0] + "<br>INSIDE: " + vls[1] + "<br>HREF: " + vls[2] + "<br>REST: " + vls[3];
<div id='id'/>