我正在实现搜索输入,这是我的代码:
"Author: Tiara Jordan Date: 02/23/17 Title: The Big Bang Theory",.replace(new RegExp( 't', 'g' ),`<strong>t</strong>`)
这将导致:
"Au<strong>t</strong>hor: <strong>T</strong>iara Jordan Da<strong>t</strong>e: 02/23/17 <strong>T</strong>i<strong>t</strong>le: <strong>T</strong>he Big Bang <strong>T</strong>heory"
如何跳过与正则表达式匹配的作者,标题和日期?我的扩展结果将是这样的:
“作者: T 伊亚拉·乔丹日期:02/23/17标题: T 他的大爆炸 T heory”
答案 0 :(得分:1)
您需要一个具有两个主要替代分支的正则表达式:一个将与您要避免修改的上下文匹配,另一个将与您的可变文本匹配。捕获其中之一以便以后可以应用不同的替换逻辑:
.replace(
new RegExp("\\b(Date|Author|Title)\\b|" + t.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "gi"),
(x,y) => y ? y : `<strong>${x}</strong>`)
在这里,\\b(Date|Author|Title)\\b|
将匹配并捕获整个单词Date
,Author
或Title
和t.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
(此{{1} }是escaping regex method)将与replace
变量中保存的文字文本匹配。
替换将是以下内容:如果第1组匹配,t
将保留一些文本,并且仅此文本将用于替换匹配。否则,匹配项将被y
标签包裹。
JS演示:
<strong>