1
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/

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 に答える