如何获得与regexp匹配的表达式

时间:2014-07-22 13:16:03

标签: javascript regex

我正在尝试获取正则表达式中匹配的表达式,但不清楚是否有一些代码供您理解:

while (something) {
    mymap[stmt.name] = {v : stmt.var}; //stmt.name is changing on each loop
    regexpString += stmt.name+"(.*)|";
}
regexpString = regexpString.slice(0, -1);
regexpE = new RegExp(regexpString, "i");
test = regexpE.exec(somevar);

现在,我希望得到匹配的stmt.name,以便使用mymap[test]或类似内容获取地图中的元素。

有没有办法通过它,或者是一种我没有看到的更好的方法?我不想每次都在每个stmt.name上循环,这样会很重。


如果我的regexpString等于http://foo.bar(.*)|https://bar.foo/foobar/(.*),我希望能够根据我的http://foo.bar变量获取https://bar.foo/foobar/somevar

1 个答案:

答案 0 :(得分:0)

为什么不抓住它?使用

var names = [];
while (something) {
    mymap[stmt.name] = {v : stmt.var}; //stmt.name is changing on each loop
    names.push(stmt.name);
}
var regexpE = new RegExp("("+names.join("|")+")(.*)", "i");
var test = regexpE.exec(somevar);
var name = test[1],
    _var = mymap[name].v;