Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Javascript数组字符串转换为正则表达式文本_Javascript_Regex_Arrays - Fatal编程技术网

将Javascript数组字符串转换为正则表达式文本

将Javascript数组字符串转换为正则表达式文本,javascript,regex,arrays,Javascript,Regex,Arrays,我这里有一个工作示例: 我试图创建一个数组,其中包含带有regex分隔符和set标志的完整正则表达式,但是RegExp对象将给定字符串解析为字符串,而不是正则表达式 var regex = "/wolves/i" vs 我的问题是:如何将字符串正则表达式转换为实际的正则表达式 更新:直到好心地向我解释 var array = ["/wolves/i", "/Duck/"]; 可以安全地成为: var array = [/wolves/i, /Duck/]; 试试这个: var reg

我这里有一个工作示例:

我试图创建一个数组,其中包含带有regex分隔符和set标志的完整正则表达式,但是RegExp对象将给定字符串解析为字符串,而不是正则表达式

  var regex = "/wolves/i"
vs

我的问题是:如何将字符串正则表达式转换为实际的正则表达式


更新:直到好心地向我解释

var array = ["/wolves/i", "/Duck/"];
可以安全地成为:

var array = [/wolves/i, /Duck/];
试试这个:

var regexSplit = regex.split( '/' );
var realRegex = new RegExp( regexSplit[1], regexSplit[2] );
或者更好:

var regexMatch = regex.match( /^\/(.*)\/([^\/]*)$/ );
var realRegex = new RegExp( regexMatch[1], regexMatch[2] );
更好的原因是,如果您的正则表达式包含“/”,则第一个正则表达式将失败

从以下地点被盗:

使用RegExp对象构造函数从字符串创建正则表达式:

var re = new RegExp("a|b", "i");
// same as
var re = /a|b/i;

选中,为什么不将数组创建为
[/wolfs/i,/Duck/]
?为什么要使用字符串呢?这对我来说似乎是一个不必要的复杂问题。@FelixKling:我甚至不知道这是可能的,不使用引号。那么你是如何创建正则表达式的呢<代码>/…/表示正则表达式文本。您以前一定使用过
/…/.test(…)
str.match(/…/)
。无论如何,这里有一些文档:@FelixKling:是的,我一直在使用
str.match(/…/)
,但我不知道不可能在数组中使用字符串,假设regexp可能包含未转换的字符,并且失败;或者我可能试图匹配一个点,却意外地关闭了一个数组项。如果你逐字复制另一个答案,那么这个问题不应该作为重复项关闭吗?
var re = new RegExp("a|b", "i");
// same as
var re = /a|b/i;