正则表达式与句子中的特定文本不匹配?

时间:2018-09-23 19:08:05

标签: javascript regex

我正在实现搜索输入,这是我的代码:

 "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”

1 个答案:

答案 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|将匹配并捕获整个单词DateAuthorTitlet.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')(此{{1} }是escaping regex method)将与replace变量中保存的文字文本匹配。

替换将是以下内容:如果第1组匹配,t将保留一些文本,并且仅此文本将用于替换匹配。否则,匹配项将被y标签包裹。

JS演示:

<strong>