替换不符合正则表达式的字符串的部分内容
替换不符合正则表达式的字符串的部分内容
我试图使用JavaScript替换字符串的部分内容,这些内容不符合正则表达式模式。这在功能上等同于在GNU grep中使用-v
标志来反转结果。以下是一个示例:
// 我想用"*"替换在"aforementioned"中不符合"fore"的所有字符 'aforementioned'.replace(new RegExp(pattern, 'i'), function(match){ // 生成与匹配长度相同的"*"字符串 return new Array(match.length).join('*'); });
我正在寻找pattern
的正则表达式。这将类似于(fore)
的相反。我已经搜索过了,但没有能够实现任何相关问题的答案来满足我的需求。无论如何,这里有一个列表,也许可以指引我们朝正确的方向前进:
在这个问题中,原因是我们想要替换一个字符串中不符合正则表达式的部分。解决方法是使用JavaScript的replace()函数结合正则表达式和回调函数。
解决方法如下所示:
'aforementioned'.replace(new RegExp(pattern + '|.', 'gi'), function(c) { return c === pattern ? c : '*'; }); // 输出结果为 "*fore*********"
在这个解决方法中,我们首先使用replace()函数来替换字符串中的匹配项。我们使用了一个正则表达式作为第一个参数,它由两个部分组成:pattern + '|.'。其中,pattern是我们想要匹配的模式,'.'表示除换行符外的任意字符。'gi'是我们传递给正则表达式的标志,'g'表示全局匹配,'i'表示不区分大小写。
在回调函数中,我们检查匹配到的字符c是否等于pattern。如果是,我们返回原字符c;如果不是,我们返回一个星号'*'来替代不符合正则表达式的部分。
这样,我们就实现了替换字符串中不符合正则表达式的部分的目的。
请问您使用的正则表达式是什么模式?