javascript - 正则表达式构造函数和文字之间的反斜杠差异

标签 javascript regex constructor literals

<分区>

标题总结了它。我在使用 new RegExp() 的正则表达式文字和构造函数之间转义反斜杠时遇到了一个奇怪的差异,我很好奇它背后的原因。

我试图在构造函数中转义括号 (,如下所示:

var search = new RegExp('/(', 'g');
var result = "(test)".match(search);

但这一直返回错误。匹配在文字 /\(/g; 中运行良好,但在构造函数中我最终不得不做这样的事情:

search = new RegExp('\\(', 'g');

有人可以向我解释为什么转义反斜杠需要构造函数中的转义反斜杠本身,而不是文字吗?

最佳答案

因为反斜杠在正则表达式上下文和字符串文字上下文中都是特殊字符。在正则表达式解析器可以看到它并应用它自己的特殊规则之前,您必须先了解字符串文字的特殊用法。

关于javascript - 正则表达式构造函数和文字之间的反斜杠差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32772399/

相关文章:

C++ 从指针构造

javascript - 如何禁用 "Changes you made may not be saved."对话框(Chrome)?

javascript - 将一个值分配给 JSON 中的多个名称

java - 正则表达式匹配由非字母数字字符包围的单词

javascript - 为什么这个 RegExp 匹配两个字符串?

java - 在 C++ 和 Java 中从构造函数调用重写的方法

java - 如何将 JOptionPane.showInputDialog 与我创建的类一起使用?

javascript - 在 ng-repeat 中为队列元素设置动画

javascript - 将 Offcanvas 与 Bootstrap 3 导航栏固定顶部一起使用

regex - 使用正则表达式替换除 "pattern"之外的所有文本