假设我有字符串变量:
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();
供参考:正则表达式中的单词边界是什么?