2014-10-16 14 views
0

我有有以下一句:

「我是一個很長的(ng.a )句子「

現在我在JavaScript中使用正則表達式(或方法)以便能夠在該句子中搜索例如以下任意組合:'ng','(ng。','ng.a ','long(','ng.a)'等。

我希望能夠通過用'<b></b>'標籤包裝它來突出顯示找到的文本。例如,如果搜索字母'e',那麼所有出現的字母'e'將包含'<b></b>',使其成爲'<b>e</b>'。

如果您輸入的字母是'ng.a',因爲只有一次發生這種情況,所以會被包裝爲'<b>ng.a</b>'。

如何使用正則表達式來做到這一點?

非常感謝您對此的幫助。

二次修訂

(該問題的透明度作出修​​訂)...請仔細閱讀

我已經找到了正則表達式是什麼,我以後也就是接近,代碼:

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)' 

如果搜索詞並沒有被 'ng.',這是 '(ng.a)',那麼結果應該是:

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

感謝

+0

可能的重複http://stackoverflow.com/questions/16251505/how-to-highlight-all-text-occurrenc es-in-html-page-with-javascript – 2014-10-16 10:37:18

+2

順便說一句:我可能是錯的,但我沒有理由在這裏使用Regex。 – 2014-10-16 10:52:37

+0

@Keim你當然是對的,但我認爲奎因是在問一個普遍的問題,否則會簡單地使用string.replace – Dinesh 2014-10-16 22:48:06

回答

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>') 
+2

但是你必須逃避'.' – revo 2014-10-16 11:04:20

+0

期間謝謝你的評論,請你看看上述改變我的問題。我將如何處理這樣的問題?如果我知道自己總是會圍繞文本括號,但解決方案並不總是如此。謝謝! – quinton 2014-10-16 15:23:02

+0

@revo是的,謝謝 – Dinesh 2014-10-16 22:48:41