这个正则表达式不应该工作吗?

Shouldn't this RegExp work?

本文关键字:工作 不应该 正则表达式      更新时间:2023-09-26
testString = "something://something/task?type=Checkin";
patt = new RegExp("something'/('w*)'?");
match = patt.exec(testString);
document.querySelector('#resultRegexp').innerHTML = match[1];

我想捕获task那么这个正则表达式不应该工作吗?

我正在抓取任何字母数字字符,直到问号......并捕获它。

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

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

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

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

我认为

这就足够了:('w*)'?,因为/没有被 ''w 捕获,而字符串中唯一的 ? 在目标字符串之后。

这是你需要的:

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

http://jsfiddle.net/FJcfd/

试试这个:var pat = /something:'/'/(?:[^'/]+'/)+('w+)'?('w+='w+)/;

它可以匹配字符串,例如:

something://something/task?type=Checkin
something://something/foo/task?type=Checkin
something://something/foo/bar/task1?type3=Checkin4