文字列変数があるとします:
var animals = "catdog caT dog cat";
猫、大きな猫、乱雑な空白は必要ありません。私は使用しようとしました:
var rep = "cat"
var nocats = animals.replace(new RegExp(rep, 'g'), '');
nocats は"dog catdog" になりましたが、"catdog dog"が必要です
どの正規表現を使用すればよいですか?
文字列変数があるとします:
var animals = "catdog caT dog cat";
猫、大きな猫、乱雑な空白は必要ありません。私は使用しようとしました:
var rep = "cat"
var nocats = animals.replace(new RegExp(rep, 'g'), '');
nocats は"dog catdog" になりましたが、"catdog dog"が必要です
どの正規表現を使用すればよいですか?
\b
単語境界と大文字と小文字を区別しない (i
フラグ) 正規表現に使用します。
var animals = "catdog caT dog cat",
animal = "cat"
animals.replace(new RegExp("\\b" + animal + "\\b", "gi"), "");
// "catdog dog " needs additional trimming
文字列内の空白をどのように処理したいかについて、あなたの質問が完全に明確ではないことに注意してください。ソース文字列の空白を折りたたむと仮定すると、これはうまくいくはずです:
// " 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();
参考までに:正規表現の単語境界とは何ですか?