Javascript动态正则表达式解析

Dev*_*xon 0 javascript regex

我正在尝试这样的正则表达式

var regex_pattern = '/cat|bat|dog/i';

regex = new RegExp(regex_pattern, "i");

var string = "A dog saw a cat and a bat";

string.match(regex);
Run Code Online (Sandbox Code Playgroud)

但它似乎没有解析.这个表达我做错了什么?

Fab*_*tté 6

您已在字符串中放置了正则表达式文字语法.您应该使用正则表达式文字语法:

var regex = /cat|bat|dog/i;
Run Code Online (Sandbox Code Playgroud)

或者传递一个字符串(没有分隔符/修饰符)作为RegExp构造函数的第一个参数:

var regex = new RegExp('cat|bat|dog', 'i');
Run Code Online (Sandbox Code Playgroud)

此外,您还需要g标志(全局修饰符)来针对所有可能的匹配测试正则表达式,否则将仅返回第一个匹配项.

完整的例子:

var regex = /cat|bat|dog/ig; //or new RegExp('cat|bat|dog', 'ig');
var string = "A dog saw a cat and a bat";
var matches = string.match(regex);
matches; //["dog", "cat", "bat"]
Run Code Online (Sandbox Code Playgroud)