我有一个字符串
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>
我想要做的是用这些节点替换花括号和其中的内容。是否可以使用正则表达式?我已经在MDN上学习了正则表达式,但仍然无法找到方法。
我有一个字符串
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>
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);
正则表达式为:
\{(.+?)\/(.+?)\}
\{
匹配 {
(.+?)
匹配并捕获任何字符(尽可能少的字符,因此是第一个/
之前的部分)\/
匹配 /
(.+?)
匹配并捕获任何字符直到 }
\}
匹配 }
replace
函数时,第一个参数始终是匹配项(这里是m
)。接下来的参数是可变参数,等于m[1]
、m[2]
等等,这是为了方便。我本可以使用m[1]
代替label
,使用m[2]
代替url
,但是使用可变参数并给它们命名可以使代码更易读。 - Lucas Trzesniewski