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

How to get the expression that matched with regexps

本文关键字:表达式 regexp 何获得      更新时间:2023-09-26

我试图得到在regexp中匹配的表达式,这是不清楚的,所以有一些代码让你理解:

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.barhttps://bar.foo/foobar/根据我的somevar变量

为什么不直接捕获它呢?使用

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;