1
在下面的字符串的支架:替換匹配的標準
(my name is zeeze :) and I am very happy ;))
我需要更換所有的)
與__BR__
是由正則表達式滿足圖案的一部分:
[8|:|;|\*]{1}[-c^;\*]?\)
參考: Regex playground
我不能代替結尾)
,因爲它不是模式的一部分。
有什麼辦法可以做到這一點?
在下面的字符串的支架:替換匹配的標準
(my name is zeeze :) and I am very happy ;))
我需要更換所有的)
與__BR__
是由正則表達式滿足圖案的一部分:
[8|:|;|\*]{1}[-c^;\*]?\)
參考: Regex playground
我不能代替結尾)
,因爲它不是模式的一部分。
有什麼辦法可以做到這一點?
你可以做到這一點的回調方法:
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}
是多餘的,因爲一個原子默認匹配一次。在字符類中沒有必要轉義字符*
,它在那裏被解析爲文字星號。