替换不符合正则表达式的字符串的部分内容

23 浏览
0 Comments

替换不符合正则表达式的字符串的部分内容

我试图使用JavaScript替换字符串的部分内容,这些内容符合正则表达式模式。这在功能上等同于在GNU grep中使用-v标志来反转结果。以下是一个示例:

// 我想用"*"替换在"aforementioned"中不符合"fore"的所有字符
'aforementioned'.replace(new RegExp(pattern, 'i'), function(match){
    // 生成与匹配长度相同的"*"字符串
    return new Array(match.length).join('*');
});

我正在寻找pattern的正则表达式。这将类似于(fore)的相反。我已经搜索过了,但没有能够实现任何相关问题的答案来满足我的需求。无论如何,这里有一个列表,也许可以指引我们朝正确的方向前进:

0
0 Comments

在这个问题中,原因是我们想要替换一个字符串中不符合正则表达式的部分。解决方法是使用JavaScript的replace()函数结合正则表达式和回调函数。

解决方法如下所示:

'aforementioned'.replace(new RegExp(pattern + '|.', 'gi'), function(c) {
    return c === pattern ? c : '*';
});
// 输出结果为 "*fore*********"

在这个解决方法中,我们首先使用replace()函数来替换字符串中的匹配项。我们使用了一个正则表达式作为第一个参数,它由两个部分组成:pattern + '|.'。其中,pattern是我们想要匹配的模式,'.'表示除换行符外的任意字符。'gi'是我们传递给正则表达式的标志,'g'表示全局匹配,'i'表示不区分大小写。

在回调函数中,我们检查匹配到的字符c是否等于pattern。如果是,我们返回原字符c;如果不是,我们返回一个星号'*'来替代不符合正则表达式的部分。

这样,我们就实现了替换字符串中不符合正则表达式的部分的目的。

请问您使用的正则表达式是什么模式?

0