2013-06-14 4 views
2

Что было бы хорошим регулярным выражением для удаления скобок и любых (но только) завершающих пробелов?Удалить скобки и конечные пробелы из переменной

Пример: "Hello [world] - what is this?" будет переведен на "Hello - what is this?".

+1

Вы имеете в виду в квадратные скобки слова? Или что-нибудь, что начинается с '[' и заканчивается '' '. И что вы пробовали до сих пор? –

ответ

2

использовать следующее регулярное выражение , Он удалит скобки и их конечные пробелы.

/(\s\s)*(\s(?=\[.*?\]\s))*\[.*?\](\s\s)*/g 

Использование:

var testStr = "Hello [world] - what is this?"; 
console.log(testStr.replace(/(\s\s)*(\s(?=\[.*?\]\s))*\[.*?\](\s\s)*/g, "")); 

Входы/выходы:

Input: Hello [world] - what is this?   Output: Hello - what is this? 
Input: Hello [world] - what is this?   Output: Hello - what is this? 
Input: Hello [world] - what is  this?  Output: Hello - what is  this? 
Input: Hello  [world] - what is this?  Output: Hello - what is this? 
Input: Hello  [world]  - what is this? Output: Hello - what is this? 
Input: Hello [world]  - what is this?  Output: Hello - what is this? 
Input: Hello [world]- what is this?    Output: Hello - what is this? 
Input: Hello  [world]- what is this?  Output: Hello - what is this? 
Input: Hello[world] - what is this?    Output: Hello - what is this? 
Input: Hello[world]  - what is this?  Output: Hello - what is this? 
Input: Hello[world]- what is this?    Output: Hello- what is this? 
+0

Это все - другие удаляют как верхние, так и задние белые пробелы вокруг скобок или оставляют пространства нетронутыми - спасибо! – TMC

0

Вы можете сделать это следующим образом:

var result = mystring.replace(/^\s*\[[^]]+]\s*|\s*\[[^]]+]\s*$|(\s)\s*\[[^]]+]\s*/g, '$1'); 
1

Вы можете позволить выражение чередовать в квадратные скобки вещей и задней бело-пространстве:

str.replace(/\[[^\]]*\]|\s+$/g, '') 

Модификатор /g используется для сопоставления все вхождения вместо первого (по умолчанию).

Update

В случае, [hello] предшествует пробел, что пространство не будет удалено, и вы должны были бы еще .replace() вместо чередования:

str.replace(/\[[^\]]*\]/g, '').replace(/\s+$/, ''); 
+0

(+1) самый простой, самый оптимизированный –

+0

Вы протестировали его? – acdcjunior

+0

Я думаю, что он означает завершающее пробел после квадратных скобок, а не в конце строки – simonzack

Смежные вопросы