1
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

4 回答 4

2

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

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

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

于 2012-08-03T19:19:59.590 回答
1

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

于 2012-08-03T19:22:44.503 回答
1

这就是你需要的:

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

http://jsfiddle.net/FJcfd/

于 2012-08-03T19:22:54.120 回答
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
于 2012-08-03T19:37:42.750 回答