正则表达式:用'<b> $ 1 </b>'搜索并包装字符'(re.a)'

时间:2014-10-16 10:35:02

标签: javascript regex

我有一句话如下:

&#34;我是一个很长的(ng.a)句子&#34;

现在我正在使用JavaScript中的正则表达式(或手段)来搜索该句子,例如以下任何组合:&#39; ng&#39;,&#39;(ng。&# 39;,&#39; ng.a&#39;,&#39; long(&#39;,&#39; ng.a)&#39;等。

我希望能够通过包含&{39; <b></b>&#39;来突出显示找到的文字。标签。可能有超过1个给定搜索的实例,例如,如果您搜索字母&#39; e&#39;然后所有出现的字母都是&#39; e&#39;会有&#39; <b></b>&#39;缠绕它,使它成为&#39; <b>e</b>&#39;。

如果您输入字母&#39; ng.a&#39;也是如此,因为只有1次出现,然后将其包裹起来,使其成为&#39; <b>ng.a</b>&# 39;

如何使用正则表达式执行此操作?

非常感谢您提前为此提供的帮助。

(为澄清问题而作出的修订)

次要修订......请阅读

我找到了一个接近我所追求的正则表达式,代码是:

var words = 'this is a ng. word (ng.a)' 
var result = words.replace(/[(]?(ng\.)[)]?/gi, '<b>$1</b>');

但这会返回:

'this is a <b>ng.</b> word <b>ng.</b>a)'

...请注意左括号已被移除!

结果应该是:

'this is a <b>ng.</b> word (<b>ng.</b>a)'

如果搜索词不是&#39; ng.&#39;它是&#39; (ng.a)&#39;,结果应该是:

'this is a ng. word <b>(ng.a)</b>'

由于

1 个答案:

答案 0 :(得分:0)

// Something like:
var x='this is a very (re.a) long sentence'
var y = x.replace(new RegExp('\\(re\\.a\\)'),'<b>$&</b>')
console.log(y) // prints "this is a very <b>(re.a)</b> long sentence"

// alternatively you don't have to escape the \ in /re/ style
var y = x.replace(new RegExp(/\(re\.a\)/),'<b>$&</b>')