javascript - 替换字符串,但仅在字符串的开头
问题描述
我从这篇文章中获得了这段代码,它更改了除 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>'
解决方案
你可以这样做:
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 中。
推荐阅读
- javascript - 使用 JS 在媒体查询中仅重新加载网页一次
- html - 动态填充的 iframe 的错误行为
- java - 在 Wicket 中使用 markupId 作为参数在 renderHead 中运行 javascript
- next.js - Next.js 404 问题
- python - 如何使用 Python 将 excel 文件从 Google 云存储读取到 Jupyter notebook/Jupyter 实验室
- annotations - @IpsEnumId 被 IPS-Generator 删除,即使我用 @customziedAnnotations ADDED 注释了方法
- azure - 无法使用 SSH 配置部署 Azure VM
- webdriver - 如何在机器人框架中向 chrome webdriver 添加新的请求标头
- python - 如何将数据框转换为自定义集合
- opencv - 使用 OpenCV 进行立体相机校准会导致更大的失真