2

ブラケットと末尾の空白のみを削除するための適切な正規表現は何でしょうか?

例:"Hello [world] - what is this?"に変換され"Hello - what is this?"ます。

4

4 に答える 4

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? 
于 2013-06-14T15:48:44.297 に答える
1

括弧で囲まれたものと末尾の空白の間で表現を交互にさせることができます:

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

/g修飾子は、最初の出現のみ (デフォルト) ではなく、すべての出現に一致するために使用されます。

アップデート

の前にスペースがある場合、そのスペースは削除されず、代替の代わりに[hello]別のスペースが必要になります。.replace()

str.replace(/\[[^\]]*\]/g, '').replace(/\s+$/, '');
于 2013-06-14T15:47:10.053 に答える
0
str.replace(/\[.+?\]\s*/g,'');
于 2013-06-14T15:46:26.220 に答える
0

次のように実行できます。

var result = mystring.replace(/^\s*\[[^]]+]\s*|\s*\[[^]]+]\s*$|(\s)\s*\[[^]]+]\s*/g, '$1');
于 2013-06-14T15:46:05.390 に答える