0

文字列変数があるとします:

var animals = "catdog caT dog cat";

猫、大きな猫、乱雑な空白は必要ありません。私は使用しようとしました:

var rep = "cat"
var nocats = animals.replace(new RegExp(rep, 'g'), '');

nocats は"dog catdog" になりましたが、"catdog dog"必要です

どの正規表現を使用すればよいですか?

4

2 に答える 2

2

\b単語境界と大文字と小文字を区別しない (iフラグ) 正規表現に使用します。

var animals = "catdog caT dog cat",
    animal = "cat"


animals.replace(new RegExp("\\b" + animal + "\\b", "gi"), "");
// "catdog  dog " needs additional trimming
于 2012-08-22T15:04:00.573 に答える
0

文字列内の空白をどのように処理したいかについて、あなたの質問が完全に明確ではないことに注意してください。ソース文字列の空白を折りたたむと仮定すると、これはうまくいくはずです:

// " catdog      caT  dog    cat" --> "catdog dog" 
animals.replace(new RegExp('\\s*\\b' + animal + '\\b\\s*|\\s+', 'gi'), ' ').trim();

また、単語境界アサーションのセマンティクスを認識していることを確認してください。この場合、「cat-dog」は「-dog」に置き換えられます。代替案は

// " cat_dog cat-dog cat dog catdog catcatdog " --> "cat_dog cat-dog dog catcatdog" 
animals.replace(new RegExp('(^|\\s+)' + animal + '(\\s+|$)|\\s+', 'gi'), ' ').trim();

参考までに:正規表現の単語境界とは何ですか?

于 2012-08-22T19:07:04.287 に答える