在研究 javascript 中正则表达式的使用时,可以遇到两种类型的示例:
A:
var regex = /^[a-zA-Z0-9]+$/;
乙:
var regex = new RegExp ("^[a-zA-Z0-9]*$");
有必要使用var foo = new RegExp
吗?或者,什么时候应该选择每种方法?
在研究 javascript 中正则表达式的使用时,可以遇到两种类型的示例:
A:
var regex = /^[a-zA-Z0-9]+$/;
乙:
var regex = new RegExp ("^[a-zA-Z0-9]*$");
有必要使用var foo = new RegExp
吗?或者,什么时候应该选择每种方法?
当RegExp()
您必须在运行时动态组装正则表达式时,构造函数很有用。如果表达式是完全静态的,则使用本机正则表达式语法(您的“A”)更容易。本机语法的易用性源于您不必担心引用反斜杠这一事实,就像您在正则表达式开始作为字符串常量时所做的那样。
有必要使用
var foo = new RegExp
吗?
不,显然不是。另一个也有效。
或者,什么时候应该选择每种方法?
正则表达式文字更易于阅读和编写,因为您不需要对正则表达式转义字符进行字符串转义 - 您可以只使用它们(反斜杠、引号)。此外,它们仅在脚本“编译”期间被解析一次 - 每次评估该行时都不需要执行任何操作。
仅当您想动态构建正则表达式时才需要使用RegExp
构造函数。
这是您可能需要的“动态”正则表达式示例new RegExp
。
var search = 'dog',
re = new RegExp('.*' + search + '.*');
如果它是静态正则表达式,那么文字语法(您的 A 选项)会更好,因为它更易于编写和阅读。