【发布时间】:2020-02-23 09:10:35
【问题描述】:
我有以下功能:
function formattedTitle(posttitle,hreflink) {
return `<a href='`+ hreflink +`'>` + posttitle.replace(/(^|\s)(#[-.\w]+)/gi, `$1</a><a class="hashtag" href='/search?q=hashtag:"$2"'>$2</a><a href='`+ hreflink + `'>`) + '</a>';
}
当我跑步时
console.log(formattedTitle('This is #awesome news','google.com'));
它输出:
<a href='google.com'>This is </a><a class="hashtag" href='/search?q=hashtag:"#awesome"'>#awesome</a><a href='google.com'> news</a>
function formattedTitle(posttitle, hreflink) {
return `<a href='` + hreflink + `'>` + posttitle.replace(/(^|\s)(#[-.\w]+)/gi, `$1</a><a class="hashtag" href='/search?q=hashtag:"$2"'>$2</a><a href='` + hreflink + `'>`) + '</a>';
}
console.log(formattedTitle('This is #awesome news', 'google.com'));
注意它是如何在 $2 匹配中包含“#”的。如何排除 hashtag: 属性中的主题标签字符,但将其保留在 href 值之间?
所以输出应该是这样的:
<a href='google.com'>This is </a><a class="hashtag" href='/search?q=hashtag:"awesome"'>#awesome</a><a href='google.com'> news</a>
我已经能够通过对整个事物进行另一次替换以将 '/search?q=hashtag:"# 替换为 '/search?q=hashtag:" 来使其工作,但我想知道是否可以不进行第二次替换?
【问题讨论】:
标签: javascript node.js regex regex-lookarounds