在以下字符串中:
(my name is zeeze :) and I am very happy ;))
我需要将所有)
替换为__BR__
,这是正则表达式所满足的模式的一部分:
[8|:|;|\*]{1}[-c^;\*]?\)
我无法替换结尾)
,因为它不是模式的一部分。
有什么方法可以达到这个目的?
答案 0 :(得分: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}
是多余的,因为默认情况下原子只匹配一次。没有必要在字符类中转义*
char,它在那里被解析为文字星号符号。