2017-07-28 129 views
1

在下面的字符串的支架:替換匹配的標準

(my name is zeeze :) and I am very happy ;)) 

我需要更換所有的)__BR__是由正則表達式滿足圖案的一部分:

[8|:|;|\*]{1}[-c^;\*]?\) 

參考: Regex playground

我不能代替結尾),因爲它不是模式的一部分。

有什麼辦法可以做到這一點?

回答

1

你可以做到這一點的回調方法:

var s = "(my name is zeeze :) and I am very happy ;))"; 
 
console.log(
 
    s.replace(/[8:;*][-c^;*]?\)/g, function($0) { 
 
    return $0.replace(/\)/g, "__BR__") 
 
    }) 
 
) 
 
// => (my name is zeeze :__BR__ and I am very happy ;__BR__)

注意|字符類[8|:|;|\*]內作爲文字|管道符號進行處理,因此,我認爲這是一個人錯誤。 {1}是多餘的,因爲一個原子默認匹配一次。在字符類中沒有必要轉義字符*,它在那裏被解析爲文字星號。