Javascript array string to regex literal

2020-04-16 05:27发布

问题:

I have a working example here: http://jsfiddle.net/R7KuK/

I've tried to create an array containing full regular expressions with regex delimiters and set flags, but the RegExp object parses given strings as strings, not as regular expressions.

  var regex = "/wolves/i"

vs.

  var regex = /wolves/i

My question is: How do I convert string-ed regex into an actual regular expression?


UPDATE: It wasn't until Felix King kindly explained to me that

var array = ["/wolves/i", "/Duck/"];

can safely become:

var array = [/wolves/i, /Duck/];

回答1:

Try this:

var regexSplit = regex.split( '/' );
var realRegex = new RegExp( regexSplit[1], regexSplit[2] );

Or better:

var regexMatch = regex.match( /^\/(.*)\/([^\/]*)$/ );
var realRegex = new RegExp( regexMatch[1], regexMatch[2] );

Better cause if your regex contains '/', the first one will fail. ;)



回答2:

as stolen from here:

Use the RegExp object constructor to create a regular expression from a string:

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