当前位置: 首页 > 面试题库 >

Javascript中是否存在RegExp.escape函数?

邵旺
2023-03-14
问题内容

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

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

有内置的方法吗?如果没有,人们会使用什么?红宝石有RegExp.escape。我觉得我不需要自己写东西,那里肯定有一些标准。谢谢!


问题答案:

上面链接的功能不足。它无法转义^$(字符串的开头和结尾)或-,这在字符组中用于范围。

使用此功能:

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

乍看起来似乎没有必要,但是转义-(以及^)使该函数适合于转义要插入字符类和正则表达式主体的字符。

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

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

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



 类似资料:
  • 问题内容: 我的代码是 但是,有时我无法加载。萤火虫错误 me.onChange不是一个函数 我想优雅地降级,因为这不是我程序中最重要的功能。给出相同的错误。 关于如何确保它存在然后仅执行的任何建议? (下面的任何一种方法都不能尝试抓到一件作品) 问题答案: 尝试这样的事情: 或更好(根据UpTheCreek推荐的评论)

  • 看完这个问题:.NET中存在僵尸吗?我开始怀疑javascript代码中是否有僵尸进程发生的可能性? 有意的例子:

  • 我刚刚开始学习Javascript,我立刻被Mozilla的《Javascript重新介绍》(JS教程)中看似矛盾的语句弄糊涂了。 一只手: “JavaScript中没有整数这类东西,因此,如果你习惯于用C或Java进行数学运算,那么你就必须对算术稍微小心一点。” 另一方面(紧接该段之后): 实际上,整数值被视为32位int(并且在某些浏览器实现中以这种方式存储),这对于逐位操作很重要。 和 “可

  • 问题内容: 如何检查PHP中是否已存在该函数? 问题答案: 使用:

  • 本文向大家介绍JavaScript 检查集合中是否存在值,包括了JavaScript 检查集合中是否存在值的使用技巧和注意事项,需要的朋友参考一下 示例 要检查集合中是否存在给定值,请使用方法:.has() true如果someVal出现在集合中,将返回,false否则返回。

  • 按照下面这张图例的解释,函数名是存放在栈内存的,函数体是存放在堆内存的,栈内存的value存放的是堆内存的地址, 那么, 下面这个代码控制台为什么打印了四次,分别输出 true false false fasle; my.init 和 init应该指向同一个堆内存地址,栈内存的value 应该是相同的,当 my.init = null后,对应的堆内存应该被垃圾回收了,为什么还会执行四次呢