Javascript 替换字符串,但仅替换字符串的开头

Javascript 替换字符串,但仅替换字符串的开头,javascript,reactjs,regex,typescript,Javascript,Reactjs,Regex,Typescript,我有这段代码,它改变了字符串的值,除了html标记 const regEx = new RegExp("(" + searchWord + ")(?!([^<]+)?>)"; //new RegExp(`/^(${searchString})(?!([^<]+)?>)/`, 'gi'); setContent(content_?.replace(regEx, `<mark>${searchString}</ma

我有这段代码,它改变了字符串的值,除了html标记

const regEx = new RegExp("(" + searchWord + ")(?!([^<]+)?>)";
 //new RegExp(`/^(${searchString})(?!([^<]+)?>)/`, 'gi'); 
setContent(content_?.replace(regEx, `<mark>${searchString}</mark>`)); //using React
但我的问题是它改变了所有的字符串,甚至在单词的中间。如果搜索字符串仅以它开头,是否可以更改该字符串

搜索字符串“age”时的示例:

错误的场景:

用法不应更改,因为它不以“age”开头

正确的情景2机构:


您可以这样做:

let searchString = "agencies";
const regEx = new RegExp(/^age/, 'gm');

let newstr = searchString.replace(regEx, `<mark>${searchString}</mark>`)
console.log(newstr)
输出:代理


PS:这是一个简单的基于JavaScript的实现,也可以在react中应用。

您有const regEx=/^${searchString}?![^/gi;?新的RegExp`/^${searchString}?![^/`,'gi'不能做很多事情,因为开头和结尾都有斜杠。使用新的regexp创建regexp时,字符串中不应该有斜杠。@WiktorStribiżew不起作用:因为您询问如何在字符串开头匹配整个单词,所以需要在有斜杠的地方使用^where,并添加\b单词边界:regexp^+searchWord+\\b?![^,gi。重点是:你需要一个。另外,我认为如果你想用大小写中的单词替换,替换必须是$。我不这么认为,但我发现问题语句存在一些问题。请检查。如果它是错误的,请更正它并共享一个链接。是的,但是在html标记中排除它的正则表达式被排除,并且e字符串“age”是硬编码的
   const sample2 = '<span>agencies</span>';
  // CORRECT Result '<span><mark>age</mark>ncies</span>'  
let searchString = "agencies";
const regEx = new RegExp(/^age/, 'gm');

let newstr = searchString.replace(regEx, `<mark>${searchString}</mark>`)
console.log(newstr)