JavaScript / регулярное выражение: удалить текст между скобками


96

Можно ли было бы изменить

Hello, this is Mike (example)

к

Hello, this is Mike

используя JavaScript с Regex?

Ответы:


217
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");

Результат:

"Hello, this is Mike"

14
обратите внимание, что .replace () не изменяет саму строку, а только возвращает новую строку. Поэтому вам все равно нужно установить значение переменной, равное тому, что вы изменили.
Ayub

2
Если круглые скобки находятся в середине строки, приведенное выше регулярное выражение удалит все пробелы вокруг них. Это, наверное, нехорошо.
Найджел Джонсон,

1
Как сделать обратное? Я хочу (example)только
карт

Не работает, если у вас есть что-то вроде: Это немного запуталось (вверху (справа)), но такое случается :)
TigrouMeow

29
var str = "Hello, this is Mike (example)";

alert(str.replace(/\s*\(.*?\)\s*/g, ''));

Это также заменит лишние пробелы до и после круглых скобок.


8

Пытаться / \([\s\S]*?\)/g

куда

( пробел) буквально соответствует символу (пробел)

\((буквально соответствует персонажу

[\s\S]соответствует любому символу ( \sсоответствует любому пробельному символу и \Sсоответствует любому непробельному символу)

*? совпадения от нуля до неограниченного времени

\))буквально соответствует персонажу

g соответствует глобально

Пример кода:

var str = "Hello, this is Mike (example)";
str = str.replace(/ \([\s\S]*?\)/g, '');
console.log(str);
.as-console-wrapper {top: 0}


1

Я нашел эту версию наиболее подходящей для всех случаев. Он не удаляет все пробелы.

Например «а (тест) б» -> «а б»

"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, " ").trim(); "Hello, this is (example) Mike ".replace(/ *\([^)]*\) */g, " ").trim();


Beware trimне поддерживается повсеместно: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , по крайней мере, этого не было в 2015 году ... в 2017 году это выглядит намного лучше.
Christophe

терпит неудачу с "это (пример (здесь) который) не годится". т.е. вложенные пары!
Marc

1

Если вам нужно удалить текст внутри вложенных круглых скобок, тогда:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.