citizen conn
citizen conn

Reputation: 15390

Shouldn't this RegExp work?

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

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

I want to capture task So shouldn't this RegExp work?

I am grabbing any alphanumeric character up until the question mark... and capturing it.

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

Upvotes: 1

Views: 117

Answers (4)

ixx
ixx

Reputation: 32271

This is what you need:

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

http://jsfiddle.net/FJcfd/

Upvotes: 1

godspeedlee
godspeedlee

Reputation: 672

try with this: var pat = /something:\/\/(?:[^\/]+\/)+(\w+)\?(\w+=\w+)/;

it can match string such as:

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

Upvotes: 0

davidrac
davidrac

Reputation: 10738

I think this would be enough: (\w*)\?, since / is not captured by \w and the only ? in the string is after your target string.

Upvotes: 1

Bergi
Bergi

Reputation: 664385

You would need to escape the slash in regex literals, and the backslash in string literals which you create regexes from:

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

I strongly recommend the first version, it is more readable.

Upvotes: 2

Related Questions