JavaScript / регулярний вираз: Видалення тексту з дужок


93

Чи можна було б змінити

Hello, this is Mike (example)

до

Hello, this is Mike

використовуючи JavaScript з регулярним виразом?

Відповіді:


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

Результат:

"Hello, this is Mike"

14
зверніть увагу, що .replace () не змінює сам рядок, він лише повертає новий рядок. Отже, вам все одно потрібно встановити змінну рівною зміні.
Аюб

2
Там, де дужки знаходяться в середині рядка, регулярний вираз вище видалить усі пробіли навколо них. Це, мабуть, не добре.
Найджел Джонсон,

1
Як зробити обернене до цього? Я хочу (example)лише
карт

Не працює, якщо у вас є щось на зразок: Це трохи заплутано (вгору (праворуч)), але це трапляється :)
TigrouMeow

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

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

Це також замінить надлишок пробілів до і після дужок.


6

Спробуйте / \([\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

Я знайшов цю версію найбільш підходящою для всіх випадків. Він не видаляє всі пробіли.

Наприклад "a (тест) b" -> "a b"

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


Обережно trimне підтримується універсально: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , принаймні це не було в 2015 році ... у 2017 році це виглядає набагато краще.
Крістоф Руссі,

не вдається з "це (приклад (тут), який) не корисний". тобто вкладені паренси!
Марк,

1

Якщо вам теж потрібно видалити текст із вкладених дужок, тоді:

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