首页 > 解决方案 > 替换字符串,但仅在字符串的开头

问题描述

我从这篇文章中获得了这段代码,它更改了除 html 标记之外的字符串的值。

const regEx = new RegExp("(" + searchWord + ")(?!([^<]+)?>)";
 //new RegExp(`/^(${searchString})(?!([^<]+)?>)/`, 'gi'); 
setContent(content_?.replace(regEx, `<mark>${searchString}</mark>`)); //using React

但我的问题是即使在单词中间它也会改变所有字符串。如果 searchString 仅以它开头,是否可以只更改字符串。

例如,如果我搜索字符串“年龄”:

错误场景1(用法):

  const sample1 = '<span>usage</span>' 
    // WRONG Result '<span>us<mark>age</mark></span>' 

不应更改用法,因为它不以“年龄”开头。

正确的场景 2(机构):

   const sample2 = '<span>agencies</span>';
  // CORRECT Result '<span><mark>age</mark>ncies</span>'  

标签: javascriptreactjsregextypescript

解决方案


你可以这样做:

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

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

输出:<mark>agent</mark>

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


推荐阅读