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

JavaScript为什么正则表达式构造函数需要双重转义?

糜淇
2023-03-14
问题内容

在下面的正则表达式中,\s表示空格字符。我想象正则表达式解析器正在遍历字符串\并且知道并知道下一个字符是特殊的。

但这不是事实,因为需要两次转义。

为什么是这样?

var res = new RegExp('(\\s|^)' + foo).test(moo);

有没有具体的例子说明如何将一次逃生误解为其他?


问题答案:

您正在通过将字符串传递给RegExp构造函数来构造正则表达式。

\ 是字符串文字中的转义字符。

\由字符串字面解析消耗…

const foo = "foo";

const string = '(\s|^)' + foo;

console.log(string);

…因此,传递给RegEx编译器的数据是普通数据,s而不是普通数据\s

您需要转义\以将\as 表示为数据,而不是本身是转义字符。



 类似资料:
  • 问题内容: 这有任何重要目的吗?可以省略吗? 问题答案: 并非总是必要的,但是它确实有其用途。假设我们想在基类上创建一个复制方法。像这样: 现在,当我们创建一个新的并复制它时会发生什么? 该副本不是的实例。这是因为(没有显式检查),我们无法从“基本”类返回副本。我们只能返回。但是,如果我们重置了构造函数: …然后一切都按预期进行:

  • 问题内容: 必须使用无参数构造函数(像Hibernate这样的工具会在此构造函数上使用反射来实例化对象)。 我得到了这个手挥手的答案,但是有人可以进一步解释吗?谢谢 问题答案: hibernate,并且通常通过反射创建对象的代码用于创建类的新实例。此方法需要一个公共的无参数构造函数才能实例化该对象。对于大多数用例,提供无参数构造函数不是问题。 有一些基于序列化的技巧可以解决没有no-arg构造函数

  • 问题内容: 我目前正在将Web应用程序代码从PHP移植到JS。 我对此正则表达式有疑问。从PHP 这样使用 如何将其转换为在JS上工作? 先感谢您 问题答案: 没什么特别的。PHP regex语法与JavaScript中的语法非常相似: 您可以从 MDN的 本手册中找到有关JavaScript 中正 则表达式的更多信息:https : //developer.mozilla.org/en- US/

  • 问题内容: 我对此代码有疑问:https : //github.com/reactjs/redux/blob/master/examples/async/containers/App.js 特别: 我猜这是一个两部分的问题。 为什么我需要将句柄更改设置为类的实例,我不能只对handleChange使用静态函数并直接在类中调用它 ? 我不知道这是怎么回事: 谢谢 问题答案: 以相反的顺序回答… 返回

  • 问题内容: 我们可以通过两种不同的方式在JavaScript中执行函数表达式: 命名函数表达式(NFE) : 匿名函数表达式 : 而且两个都可以用调用。我真的看不到为什么/何时应该使用匿名函数以及何时应该使用命名函数表达式。他们之间有什么区别? 问题答案: 对于匿名函数表达式,该函数是匿名的从字面上看,它没有名称。您要为其分配变量的变量具有名称,但是该函数没有。 _(更新:这在ES5中是正确的。从

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?