我正在努力实现:
const finalStr = "team='Core', team='Mechanics'"
//loop through string, get single quotes, add <bold>'Core'</bold>
//I want to return the string:
"team=<bold>'Core'</bold>, team=<bold>'Mechanics'</bold>"
我尝试过的方法,但显然是错误的...无法将我的头缠住:
const finalStr = this.state.finalString
const newFinal = finalStr.match(/'(.*?)'/g).map(item => {
item = item.replace(item, '<b>' + item + '</b>')
return item;
});
答案 0 :(得分:3)
您不需要回调或任何其他函数,只需使用String.replace()
文档中描述的replacement pattern
插入匹配的子字符串($&
)。除非您打算对匹配项进行其他操作,否则您也不需要捕获组的括号。
const finalStr = "team='Core', team='Mechanics'"
const newFinal = finalStr.replace(/'.*?'/g, '<bold>$&</bold>')
console.log(newFinal)
请注意,HTML中没有<bold>
标签,因此,如果您尝试创建有效的HTML,则应使用<b>
。
答案 1 :(得分:1)
您可以使用相同的基本正则表达式/'.*?'/gi
,并将自定义的“替换”回调传递给string#replace
方法来解决此问题:
const input = "team='Core', team='Mechanics'"
const output = input.replace(/'.*?'/gi, function(matchStr) {
// Wrap each match in the resulting string with <bold /> tags
return '<bold>' + matchStr + '</bold>';
});
console.log(output);