假设我有一个关键字ProcessTest
,并且我希望匹配所有非大写的匹配项,以便用正确拼写的关键字替换它们。
PROCESSTEST >> ProcessTest
Processtest >> ProcessTest
proceSstest >> ProcessTest
等
所以我首先需要对关键字进行不区分大小写的匹配,然后对正确拼写的关键字进行区分大小写检查。
有关如何使用正则表达式执行此操作的任何建议吗?
答案 0 :(得分:2)
我完全赞同@ casimir-et-hippolyte,只需将全局一词与case insentitive选项(gi
)匹配,然后替换它。
代码在每种语言中都非常简单有效。为什么在没有必要时增加复杂性? ;)
以下是一个示例
var text = "This is ProCeSSTesT or processTest or PROCESSTEST. This is FooBAR or martyMCfly or foobAr"
var words = ["ProcessTest", "FooBar", "MartyMcFly"]
words.forEach(function(word) {
var re = new RegExp(word, "gi")
text = text.replace(re, word)
})
console.log(text)
一些改进
搜索ProcessTest
时您当然不希望匹配preProcessTest
或processTester
等字词,所以让我们像这样更新我们的正则表达式:\bprocesstest\b
我没有使用前瞻,因为不是每种语言都支持它们。
var text = "This is ProCeSSTesT or processTester or PROCESSTEST. This is FooBAR or martyMCfly or foobAr or preProcessTest and DummyFooBar"
var words = ["ProcessTest"]
words.forEach(function(word) {
var re = new RegExp("\\b" + word + "\\b", "gi")
text = text.replace(re, word)
})
console.log(text)