Javascript:将字符串转换为正则表达式

时间:2011-01-13 04:25:04

标签: javascript

我想将看起来像正则表达式的字符串转换为正则表达式。

我想这样做的原因是因为我正在动态构建一个在正则表达式中使用的关键字列表。例如,对于文件扩展名,我将提供一个可接受的扩展名列表,我希望将其包含在正则表达式中。

var extList = ['jpg','gif','jpg'];

var exp = /^.*\.(extList)$/;

谢谢,感谢任何帮助

3 个答案:

答案 0 :(得分:9)

您将要使用RegExp构造函数:

var extList = ['jpg','gif','jpg'];    
var reg = new RegExp('^.*\\.(' + extList.join('|') + ')$', 'i');

MDC - RegExp

答案 1 :(得分:2)

var extList = "jpg gif png".split(' ');
var exp = new RegExp( "\\.(?:"+extList.join("|")+")$", "i" );

请注意:

  • 你需要双重转义反斜杠(一次用于字符串,一次用于正则表达式)
  • 您可以为正则表达式提供标志(例如不区分大小写)作为字符串
  • 您不需要将特定的正则表达式锚定到字符串的开头,对吧?
  • 我假设你不需要捕获扩展名是什么,我把你的parens变成了非捕获组(?:...)

哦,你的原始扩展名列表包含'jpg'两次:)

答案 2 :(得分:1)

您可以使用RegExp对象:

var extList = ['jpg','gif','jpg'];

var exp = new RegExp("^.*\\.(" + extList.join("|") + ")$");