2010-10-12 50 views
11

可能重复:
passing variable to a regexp in javascript在Javascript中的现有RegExp中插入一个字符串?

我有一个变量:

resource = "user"; 

欲该变量插入到预定义的正则表达式(替换下方变量):

/^\/variable\/\d+$/ 

我该怎么做?

+2

很多重复的,其中包括:将变量传递给JavaScript中的正则表达式](http://stackoverflow.com/questions/487509/passing-variable-to-a-regexp-in-javascript) – 2010-10-12 15:31:24

回答

24

使用的RegExp构造:

var re = new RegExp("^\\/" + resource + "\\/\\d+$"); 

请注意,你需要躲避分隔符/两次,一次是为正则表达式一次字符串声明。

您可能还需要使用一些逃生功能引用字符串在正则表达式中使用:

function quote(str) { 
    return str.replace(/(?=[\/\\^$*+?.()|{}[\]])/g, "\\"); 
} 

这使我们这样的:

var re = new RegExp("^\\/" + quote(resource) + "\\/\\d+$"); 
6

你应该可以做到这一点。

var resource = "user"; 
var regex = new RegExp("^\/"+resource+"\/\d+$", "g"); 

然后,可以通过RegExp对象的功能,如myString.replace()或调用RegExp对象本身的exec()方法。

+0

删除分隔符,它很好。 – Gumbo 2010-10-12 15:32:06

+0

哎呀,谢谢! – 2010-10-12 15:32:31

+0

+1表示如何处理RegExp对象:) – 2012-12-13 17:08:59

3

可以使用new RegExp方法:

var resource = "user"; 
new RegExp("^\/"+resource+"\/\d+$"); 
相关问题