JavaScript:RegExp.escape 函数是否存在?
P粉381463780
P粉381463780 2023-11-16 17:41:27
[JavaScript讨论组]

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

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

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

P粉381463780
P粉381463780

全部回复(2)
P粉662089521

对于任何使用 Lodash 的人,自 v3.0.0_.escapeRegExp 函数是内置的:

_.escapeRegExp('[lodash](https://lodash.com/)');
// → '\[lodash\]\(https:\/\/lodash\.com\/\)'

并且,如果您不想需要完整的 Lodash 库,则可能需要 就是这个功能

P粉734486718

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

使用此功能:

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

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

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

由于转义它们中的任何一个都没有坏处,因此转义以覆盖更广泛的用例是有意义的。

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号