Я хочу использовать функцию замены javascript и регулярное выражение для замены частей строки.
У меня есть строка, похожая на это
(x=(1.22|2|3) && za=(hello|world|there|wow)||yy=(2|3))
Конечная цель состоит в том, чтобы превратить это в следующее, используя JavaScript
(x=1.22|2|3 && za=hello|world|there|wow||yy=2|3)
Я пытаюсь использовать метод replace() с регулярным выражением и группой захвата. То, где я застреваю, является регулярным выражением. Я могу захватить что- something=
, которое я использую (\w+=)
для захвата. Но я не мог понять, как захватить контент в скобках
1.22|2|3
hello|world|there|wow
2|3
Эти значения разделены |
может быть строкой, целым числом или десятичной дробью. Я пробовал такие вещи, как -
/(\w*\.?\w+\|\w*\.?\w+)/g
Но это только захватило бы группы "чего-то | чего-то". Таким образом, для "1,22 | 2 | 3" будет зафиксирован только "1,22 | 2". Я пробовал разные варианты этого регулярного выражения и не мог понять, как захватить все '|' содержание с разделителями. Спасибо заранее.
Вы можете использовать
s = s.replace(/(\w=)\(([^()]+)\)/g, "$1$2");
подробности
(\w=)
- Группа 1: слово char и a =
\(
- а (
символ([^()]+)
- Группа 2: один или несколько символов, отличных от (
и )
\)
- а )
полукоксаСмотрите демо-версию регулярного выражения.
Или, если внутри скобок должен быть символ трубы, используйте
s = s.replace(/(\w=)\(([^()|]+(?:\|[^()|]+)+)\)/g, "$1$2");
Смотрите другую демонстрацию регулярных выражений. Здесь шаблон группы 2 отличается от первого шаблона:
[^()|]+
- 1 или более символов, кроме (
, )
и |
(?:\|[^()|]+)+
- 1 или более повторений \|
- трубка[^()|]+
- 1 или более символов, кроме (
, )
и |
s = s.replace(/(\w=)\([^()]+)\)/g, "$1$2")