roland
roland

Reputation: 7775

Convert c# regex to javascript regex

The following regular expression is workable using C# reg ex:

^(?<survey>#_surveyForm.+)|#(?:(?<url>http.+\.\w{3,4}).+_surveyForm=\w+)$

It matches string such as:

#http://localhost/tableaux-p145717.htm=&_surveyForm=second

or

#_surveyForm=second

I used named capturing groups.

I know Javascript doesn't take advantage of named capturing groups (instead it uses \1, \2, etc.). Besides the syntax is slightly different from the one above.

How can I make that reg ex javascript-compliant?

Thanks in advance,

R.

Upvotes: 3

Views: 2983

Answers (2)

Tim Pietzcker
Tim Pietzcker

Reputation: 336158

As you said, JavaScript doesn't support named captures. You have to change those into "normal" capturing groups and refer to them by number instead of by name:

/^(#_surveyForm.+)|#(?:(http.+\.\w{3,4}).+_surveyForm=\w+)$/

You should also be aware that \w only matches ASCII alphanumerics in JavaScript whereas it matches Unicode alnums in .NET.

Upvotes: 4

Qtax
Qtax

Reputation: 33908

You could use something like:

/^#(http.+.\w{3,4}.+)?_surveyForm=(\w+)$/

Your URL will be in first capturing group, and the survey in the second.

This expression would probably work better for you:

/^#(https?:\/\/\S*)?\b_surveyForm=(\w+)$/

Upvotes: 0

Related Questions