这个RegExp不应该工作吗?

时间:2012-08-03 19:12:11

标签: javascript regex

testString = "something://something/task?type=Checkin";

patt = new RegExp("something\/(\w*)\?");
match = patt.exec(testString);
document.querySelector('#resultRegexp').innerHTML = match[1];

我想捕获task所以这个RegExp不应该工作吗?

我抓住任何字母数字字符直到问号...并捕获它。

http://jsfiddle.net/h4yhc/2/

4 个答案:

答案 0 :(得分:2)

你需要转义正则表达式文字中的斜杠,以及你创建正则表达式的字符串文字中的反斜杠:

var patt = /something\/(\w*)\?/g;
// or
var patt = new RegExp("something/(\\w*)\\?", 'g');

我强烈推荐第一个版本,它更具可读性。

答案 1 :(得分:1)

我认为这就足够了:(\w*)\?,因为\并没有被\ w和唯一的?捕获?字符串中的字符串位于目标字符串之后。

答案 2 :(得分:1)

这就是你需要的:

patt = new RegExp(".*/(\\w*)\\?");

http://jsfiddle.net/FJcfd/

答案 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