如何从字符串构建RegExp

时间:2016-03-08 13:32:25

标签: javascript

我有一个字符串和匹配的模式:

var string = 'stackoverflow Javascript Regex Help';    
var pattern=/(^stackoverflow Javascript)/;

我正在寻找一种方法来重复使用我以前的模式,而无需再次重写它。不久,我想在我之前的模式结尾添加一个额外的选项(在拆分之前匹配一个空格)

var newString=string.split(pattern+/(.\S*)/);
alert(newString); //Regex Help

但这不起作用。 有没有办法可以实现这个目标?

谢谢你的支持。

2 个答案:

答案 0 :(得分:3)

您可以使用RegExp从字符串构建正则表达式:

var common_pattern = "(^stackoverflow Javascript)";
var extra_pattern = "(.\\S*)"; // need to escape the escape character because the pattern is now a string
var regexp = new RegExp(common_pattern + extra_pattern);

var newString = string.split(regexp);

答案 1 :(得分:0)

如果您真的想重复使用该模式,可以使用RegExp的toString来完成。

Se example at JSFiddle here

此示例首先使用数字1拆分字符串。然后将数字2添加到模式以在12分割。

剪断:

var newPattern = new RegExp(pattern.toString().slice(1,-1) + '2');

此致

编辑: 更新了正确处理修饰符的示例。