Javascript 是否需要使用var foo=new RegExp?

Javascript 是否需要使用var foo=new RegExp?,javascript,regex,Javascript,Regex,在研究javascript中正则表达式的使用时,可能会遇到两种类型的示例: A: B: 是否需要使用var foo=new RegExp?或者,什么时候应该选择每个方法?当您必须在运行时动态组装正则表达式时,RegExp()构造函数非常有用。如果表达式是完全静态的,则更容易使用本机正则表达式语法(“A”)。本机语法的易用性源于这样一个事实,即您不必像正则表达式作为字符串常量开始使用时那样担心引用反斜杠。当您必须在运行时动态组装正则表达式时,RegExp()构造函数非常有用。如果表达式是完全静态的

在研究javascript中正则表达式的使用时,可能会遇到两种类型的示例:

A:

B:

是否需要使用
var foo=new RegExp
?或者,什么时候应该选择每个方法?

当您必须在运行时动态组装正则表达式时,
RegExp()
构造函数非常有用。如果表达式是完全静态的,则更容易使用本机正则表达式语法(“A”)。本机语法的易用性源于这样一个事实,即您不必像正则表达式作为字符串常量开始使用时那样担心引用反斜杠。

当您必须在运行时动态组装正则表达式时,
RegExp()
构造函数非常有用。如果表达式是完全静态的,则更容易使用本机正则表达式语法(“A”)。本机语法的易用性源于这样一个事实:您不必担心引用反斜杠,就像正则表达式作为字符串常量开始使用时一样

是否需要使用
var foo=new RegExp

不,显然不是。另一个也可以

或者,什么时候应该选择每种方法

更容易读写,因为您不需要字符串转义正则表达式转义字符-您只需使用它们(反斜杠、引号)。此外,在脚本“编译”过程中,它们只被解析一次——每次计算行时不需要执行任何操作

仅当您希望动态构建正则表达式时才需要使用

是否需要使用
var foo=new RegExp

不,显然不是。另一个也可以

或者,什么时候应该选择每种方法

更容易读写,因为您不需要字符串转义正则表达式转义字符-您只需使用它们(反斜杠、引号)。此外,在脚本“编译”过程中,它们只被解析一次——每次计算行时不需要执行任何操作


仅当您希望动态构建正则表达式时才需要使用。这里是一个“动态”正则表达式的示例,您可能需要
新的RegExp

var search = 'dog',
    re = new RegExp('.*' + search + '.*');

如果它是一个静态正则表达式,那么文字语法(您的a选项)会更好,因为它更易于编写和读取。

下面是一个“动态”正则表达式的示例,您可能需要
新的RegExp

var search = 'dog',
    re = new RegExp('.*' + search + '.*');

如果它是一个静态正则表达式,那么文字语法(您的a选项)会更好,因为它更易于编写和阅读。

@JamesMontagne我想我的问题更基本。@JamesMontagne我想我的问题更基本。。此外,一个重要的区别是在编译表达式时(计算时与运行时)在处理大型数据集和/或许多正则表达式时,这可能会很昂贵。@MarcellFülöp这是一个很好的观点;我不知道它对现代JavaScript引擎有多大影响。我认为以前有一个显式的“.compile()”函数,但这已经被弃用很长时间了。此外,一个重要的区别是,在处理大型数据集和/或许多正则表达式时,在编译表达式时(在计算时和运行时)可能会很昂贵。@MarcellFülöp这是一个很好的观点;我不知道它对现代JavaScript引擎有多大影响。我认为以前有一个显式的“.compile()”函数,但它已经被弃用很长时间了。
var search = 'dog',
    re = new RegExp('.*' + search + '.*');