用节点替换大括号和文本

时间:2015-06-28 15:14:54

标签: javascript regex

我有一个字符串

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

我已经提取了大括号,并用

之类的方式制作了一个锚标记
<a href="www.john.com">john</a>

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

1 个答案:

答案 0 :(得分: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);

正则表达式是:

\{(.+?)\/(.+?)\}
  • \{匹配{
  • (.+?)匹配并捕获任何内容(尽可能少的字符,直到第一个/
  • \/匹配/
  • (.+?)匹配并捕获最多}
  • 的内容
  • \}匹配}