testString = "something://something/task?type=Checkin";
patt = new RegExp("something\/(\w*)\?");
match = patt.exec(testString);
document.querySelector('#resultRegexp').innerHTML = match[1];
我想捕获task
所以这个RegExp不应该工作吗?
我抓住任何字母数字字符直到问号...并捕获它。
答案 0 :(得分:2)
你需要转义正则表达式文字中的斜杠,以及你创建正则表达式的字符串文字中的反斜杠:
var patt = /something\/(\w*)\?/g;
// or
var patt = new RegExp("something/(\\w*)\\?", 'g');
我强烈推荐第一个版本,它更具可读性。
答案 1 :(得分:1)
我认为这就足够了:(\w*)\?
,因为\并没有被\ w和唯一的?捕获?字符串中的字符串位于目标字符串之后。
答案 2 :(得分:1)
答案 3 :(得分:0)
试试这个:var pat = /something:\/\/(?:[^\/]+\/)+(\w+)\?(\w+=\w+)/;
它可以匹配字符串,如:
something://something/task?type=Checkin
something://something/foo/task?type=Checkin
something://something/foo/bar/task1?type3=Checkin4