替换与正则表达式不匹配的字符串部分

时间:2014-03-01 18:41:03

标签: javascript regex replace

我正在尝试使用JavaScript替换匹配正则表达式模式的字符串部分。这在功能上等同于在GNU grep中使用-v标志来反转结果。这是一个例子:

// I want to replace all characters that don't match "fore" 
// in "aforementioned" with "*"

'aforementioned'.replace(new RegExp(pattern, 'i'), function(match){
    //generates a string of '*' that is the length of match
    return new Array(match.length).join('*');
});

我正在寻找pattern的正则表达式。这与(fore)的反面相似。我已经四处搜索但未能实现任何相关问题的答案以满足我的需求。无论如何,这是一个列表,也许它会指出我们正确的方向:

1 个答案:

答案 0 :(得分:7)

如果我理解正确,这应该是一个可能的解决方案:

'aforementioned'.replace(new RegExp(pattern + '|.', 'gi'), function(c) {
    return c === pattern ? c : '*';
});

>> "*fore*********"