我正在尝试获取正则表达式中匹配的表达式,但不清楚是否有一些代码供您理解:
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
答案 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;