JavaScript正则表达式中与空白边界匹配的非捕获组
我有这个功能,可以找到整个单词并替换它们。它标识空间,但不应替换它们(即,不捕获它们)JavaScript正则表达式中与空白边界匹配的非捕获组,javascript,regex,replace,word-boundaries,Javascript,Regex,Replace,Word Boundaries,我有这个功能,可以找到整个单词并替换它们。它标识空间,但不应替换它们(即,不捕获它们) function asd (sentence, word) { str = sentence.replace(new RegExp('(?:^|\\s)' + word + '(?:$|\\s)'), "*****"); return str; }; 然后我有以下字符串: var sentence = "ich mag Äpfel"; var word = "Äpfel"; 结果应该是
function asd (sentence, word) {
str = sentence.replace(new RegExp('(?:^|\\s)' + word + '(?:$|\\s)'), "*****");
return str;
};
然后我有以下字符串:
var sentence = "ich mag Äpfel";
var word = "Äpfel";
结果应该是:
"ich mag *****"
而不是:
"ich mag*****"
我要买后者
如何使其能够识别空格,但在替换单词时忽略空格
起初,这看起来像是重复的,但我没有找到这个问题的答案,这就是为什么我要问它
谢谢您应该通过在替换模式中使用带有替换backreference的捕获组(而不是非捕获组)将匹配的空白放回,并且您还可以利用右空白边界的前瞻,这在连续匹配的情况下非常方便:
功能asd(句子、单词){
str=句子。替换(新的RegExp(“(^ |\\s)”+word+”(?=$|\\s)”),“$1****”;
返回str;
};
var句子=“ich magÄpfel”;
var word=“Äpfel”;
console.log(asd(句子、单词))代码>您知道如何使它能够处理以连字符开头的单词,而不是以字符串或空格开头的单词吗?示例:在“ich gehe ins fitness studio”@N中查找并替换“***”的“studio”。您可以将其添加到左侧边界:(^ |\\s)
->(^ |[-\\s])
。如果您决定实现Unicode单词边界,问题会更大,因为最好的方法是使用XRegExp(如果您计划支持所有浏览器)。