2016-10-25 8 views
0

v_ [i]がvとなるような文字列を見つけたら、いくつかの文字を削除しようとしています。これを行うにはRegExpを使用していますが、RegexExpが適切にグループを取得しない

var string='v_[i]'; 
var regexExp = new RegExp('_[\w+]','ig'); 
var finalstring = string.replace(regexExp,''); 
alert(finalstring); 

私は文字列リテラルを使用する場合は一方で、それは、なぜ正規表現はない文字列リテラルとしてグループを取り込むない完璧

var finalstring = string.replace(/_\[\w+\]/ig,''); 

を動作しますが。

+0

'新しい正規表現を - > 'でなければなりません新しいRegExp( '_ \\ [\\ w + \\]'、 'ig') ' –

+0

うまくいきました。なぜ余分なスラッシュを追加する必要がありますか? –

+0

これは、コンストラクタで正規表現を作成するときに文字列を渡すためです。文字列中の '\'は、最初にコンストラクタに渡す前に次の文字をエスケープするため、 '_ [\ w +] ''は '_ [w +]'になります。 –

答えて

0

あなたは正規表現でカッコエスケープする必要があります: `あなたのブラケットとバックスラッシュをエスケープするのを忘れて( 'IG'、 '_ [\ + W]')

var string = 'v_[i]'; 
var regexExp = /_\[\w+\]/ig; 
var finalstring = string.replace(regexExp, ''); 
+0

あなたは正しいです。それは何とか冗長です。私は私の答えを訂正します。 –

関連する問題