В следующей строке:
(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}
является избыточным, поскольку по умолчанию один атом сопоставляется. Нет необходимости скрывать символ *
внутри класса символов, он анализируется как символ буквальной звездочки.