小编典典

JavaScript 中有 RegExp.escape 函数吗?

all

我只想用任何可能的字符串创建一个正则表达式。

var usersString = "Hello?!*`~World()[]";
var expression = new RegExp(RegExp.escape(usersString))
var matches = "Hello".match(expression);

有内置的方法吗?如果没有,人们用什么?红宝石有RegExp.escape. 我觉得我不需要自己写,那里必须有一些标准。


阅读 245

收藏
2022-03-10

共1个答案

小编典典

另一个答案中链接的功能不足。它无法转义^or $(字符串的开头和结尾), or -,它在字符组中用于范围。

使用这个功能:

function escapeRegex(string) {
    return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}

虽然乍一看似乎没有必要,但转义-(以及^)使该函数适合转义要插入到字符类以及正则表达式主体中的字符。

转义/使函数适合转义字符以在 JavaScript 正则表达式文字中使用以供以后评估。

由于逃避其中任何一个都没有不利之处,因此逃避以涵盖更广泛的用例是有意义的。

是的,这不是标准 JavaScript 的一部分,这是一个令人失望的失败。

2022-03-10