将Javascript数组字符串转换为正则表达式文本
我这里有一个工作示例: 我试图创建一个数组,其中包含带有regex分隔符和set标志的完整正则表达式,但是RegExp对象将给定字符串解析为字符串,而不是正则表达式将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
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;