JavaScript中不区分大小写的字符串替换?

我需要不区分大小写地突出显示JavaScript字符串中的给定关键字。

例如:

  • highlight("foobar Foo bar FOO", "foo") 应该回来 "<b>foo</b>bar <b>Foo</b> bar <b>FOO</b>"

我需要用于任何关键字的代码,因此使用像硬编码的正则表达式这样/foo/i的解决方案还不够。

最简单的方法是什么?

(这是标题中详述的更一般问题的实例,但我认为最好用一个具体,有用的示例来解决。)

回答:

可以 ,如果你准备搜索字符串使用正则表达式。在PHP中,例如有一个函数preg_quote,它用转义的版本替换字符串中的所有正则表达式字符。

这是javascript(source)的一个函数:

function preg_quote (str, delimiter) {

// discuss at: https://locutus.io/php/preg_quote/

// original by: booeyOH

// improved by: Ates Goral (https://magnetiq.com)

// improved by: Kevin van Zonneveld (https://kvz.io)

// improved by: Brett Zamir (https://brett-zamir.me)

// bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)

// example 1: preg_quote("$40")

// returns 1: '\\$40'

// example 2: preg_quote("*RRRING* Hello?")

// returns 2: '\\*RRRING\\* Hello\\?'

// example 3: preg_quote("\\.+*?[^]$(){}=!<>|:")

// returns 3: '\\\\\\.\\+\\*\\?\\[\\^\\]\\$\\(\\)\\{\\}\\=\\!\\<\\>\\|\\:'

return (str + '')

.replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&')

}

因此,您可以执行以下操作:

function highlight(str, search) {

return str.replace(new RegExp("(" + preg_quote(search) + ")", 'gi'), "<b>$1</b>");

}

以上是 JavaScript中不区分大小写的字符串替换? 的全部内容, 来源链接: utcz.com/qa/426609.html

回到顶部