Замените скобку, которая соответствует критерию

1

В следующей строке:

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

Мне нужно заменить все ) на __BR__ которые являются частью шаблона, удовлетворяемого регулярным выражением:

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

Код: Regex детская площадка

Я не могу заменить окончание ) потому что он не является частью шаблона.

Что может быть для этого?

Теги:
string
pattern-matching

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню