正则表达式检查关键字的大写

时间:2017-04-15 13:26:43

标签: regex

假设我有一个关键字ProcessTest,并且我希望匹配所有非大写的匹配项,以便用正确拼写的关键字替换它们。

PROCESSTEST >> ProcessTest
Processtest >> ProcessTest
proceSstest >> ProcessTest

所以我首先需要对关键字进行不区分大小写的匹配,然后对正确拼写的关键字进行区分大小写检查。

有关如何使用正则表达式执行此操作的任何建议吗?

1 个答案:

答案 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时您当然不希望匹配preProcessTestprocessTester等字词,所以让我们像这样更新我们的正则表达式:\bprocesstest\b

我没有使用前瞻,因为不是每种语言都支持它们。

Demo

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)

Demo