Javascript 如何突出显示字符串中的文本?

Javascript 如何突出显示字符串中的文本?,javascript,regex,string,reactjs,Javascript,Regex,String,Reactjs,我有这样一句话:“你好,我在找一份教师的工作。”。必须突出显示此/#------中的所有内容 下面是我正在做的: highlightMessage(message) { if (message.match(/\/#\s*|\s*#\//g)) { console.log(message.replace(/\/#\s*|\s*#\//g, `<span className='yellow'>$1</span>`)) } } highligh

我有这样一句话:“你好,我在找一份教师的工作。”。必须突出显示此/#------中的所有内容

下面是我正在做的:

highlightMessage(message) {
    if (message.match(/\/#\s*|\s*#\//g)) {
      console.log(message.replace(/\/#\s*|\s*#\//g, `<span className='yellow'>$1</span>`))
    }
  }
highlightMessage(消息){
if(message.match(//\//\s*\s*\//g)){
console.log(message.replace(//\//\s*\s*\///g,`$1`))
}
}
但我的输出是:

Hello , I'm looking for <span className='yellow'>$1</span>job as a teacher<span className='yellow'>$1</span>
你好,我想找一份1美元的教师工作1美元
哪里出错了?

使用
(.*?
创建一个组,该组在散列之间匹配任何非贪婪的内容,然后传递一个arrow函数作为第二个参数来访问匹配的组,并返回值以替换它。可以在该箭头函数的第二个参数中访问该组:

function highlight(message) {
  return message.replace(/\/#\s*(.*?)\s*#\//g,
    (_, g) => `<span className='yellow'>${g}</span>`);
}
功能突出显示(消息){
返回消息。替换(/\/\s*(.*)\s*\\//g,
(u,g)=>`${g}`);
}
如果需要,您甚至可以将替换函数作为参数传递,以自定义替换

以下是一个在同一字符串中有多个替换的示例:

函数高亮显示(消息,replacer=s=>`${s}`){
返回消息.replace(/\/\\\s*(.*)\s*\\\//g,(\ug,g)=>replacer(g));
}
document.body.innerHTML+=突出显示(“您好,/#我#/正在寻找/#教师工作#/”;
document.body.innerHTML+=高亮显示(
此处无需替换);
document.body.innerHTML+=highlight(“
您也可以传递一个自定义的/#replacer函数”,s=>”您可以使用regex
\/#(.*)\/
/#/
中的所有内容传递给捕获组,并在捕获组周围使用一个
包装器

功能高亮信息(信息){
if(//\\\\\\//g.test(消息)){
document.body.innerHTML+=message.replace(/\/\\\\(.*)\\//g,`1`)
}
}
highlightMessage(“你好,我正在找一份教师工作。”
.red{color:red}
的可能重复项