在以下字符串中:
(my name is zeeze :) and I am very happy ;))
我需要将所有 )
替换为 __BR__
,它们是正则表达式满足的模式的一部分:
[8|:|;|\*]{1}[-c^;\*]?\)
我无法替换结尾 )
,因为它不是模式的一部分。
有什么方法可以实现这一点?
最佳答案
你可以在回调方法中做:
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}
是多余的,因为默认情况下一个原子只匹配一次。不需要在字符类中转义 *
字符,它在那里被解析为文字星号。
关于javascript - 替换符合条件的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45373805/