用节点替换大括号和文本

Dar*_*lyn 4 javascript regex

我有一个字符串

var str="Hello my name is {john/www.john.com} and welcome to my {site/www.site.com}."
Run Code Online (Sandbox Code Playgroud)

我已经提取了大括号,并用它们制作了一个锚标记

<a href="www.john.com">john</a>
Run Code Online (Sandbox Code Playgroud)

我想要做的是用这些节点替换大括号和内容.是否可以使用regExp?我已经研究过MDN上的regExp,但仍然无法弄清楚方法.

Luc*_*ski 8

当然是啦:

var str = "Hello my name is {john/www.john.com} and welcome to my {site/www.site.com}.";

str = str.replace(/\{(.+?)\/(.+?)\}/g, function(m, label, url) {
    return '<a href="http://' + url + '">' + label + '</a>';
});

document.write(str);
Run Code Online (Sandbox Code Playgroud)

正则表达式是:

\{(.+?)\/(.+?)\}
Run Code Online (Sandbox Code Playgroud)
  • \{ 火柴 {
  • (.+?)匹配和捕获任何东西(尽可能少的字符,所以直到第一个/)
  • \/ 火柴 /
  • (.+?) 匹配并捕获任何东西 }
  • \} 火柴 }