JavaScript | Как удалить скобки и всё что внутри скобок в строке?

Есть строка:

var stroka = "Телевизор LG серый (арт. 73466dsd86dfs) диагональ 45"

Нам нужно удалить часть строки, которая находится внутри круглых скобок вместе со скобками. Как это сделать?

 

Решение

Нам поможет регулярное выражение. Мы сейчас его напишем.

Определяем регулярное выражение:

/ /

В нашем случае в строке всего две круглые скобки, поэтому мы можем не использовать никаких флагов для регулярного выражения.

Мы ищем «начальный» символ круглой скобки в строке (. Тут проблема в том, что круглые скобки в регулярных выражениях являются служебными символами Если мы не хотим использовать их «служебно», то нам нужно экранировать круглую скобку, чтобы она была воспринята регулярным выражением как символ какой-то строки.


Экранируем символ строки — круглую скобку из строки (

\(

Мы использовали обратную косую линию для экранирования служебного символа скобки.

Ещё мы ищем «конечный» символ круглой скобки в строке ). Его тоже нужно экранировать подобным образом:

\)

Мы не знаем сколько символов может быть между круглыми скобками в строке, а значит нам нужно воспользоваться точкой . и квантификатором +:

.+

Точка . означает один какой-то символ, а квантификатор + означает, что таких точек (символов) может быть от 1 до бесконечности. Регулярное выражение само решит сколько символов упрётся в конечную скобку.

Соберём всю конструкцию:

/\(.+\)/

Создадим переменную телевизора и поместим в неё результат замены строки нашим регулярным выражением:

var tel = stroka.replace(/\(.+\)/,'')
Удалили круглые скобки из строки и их содержимое - JavaScript
Удалили круглые скобки из строки и их содержимое — JavaScript

Мы успешно удалили содержимое внутри круглых скобок, но в ответе получили строку с двумя пробелами подряд. Для решения этой проблемы можно дописать одну точку в наше выражение:

так

var tel = stroka.replace(/.\(.+\)/,'')
Дописали точку перед первой круглой скобкой
Дописали точку перед первой круглой скобкой

или так

var tel = stroka.replace(/\(.+\)./,'')
Дописали точку после второй круглой скобки
Дописали точку после второй круглой скобки

 

Информационные ссылки

JavaScript | Как экранировать круглую скобку в регулярных выражениях?

Стандарт ECMAScript — Раздел «22.2.2.3 Disjunction» — https://tc39.es/ecma262/#sec-disjunction

Поделись записью