1

(new RegExp('/videos/(\d+)$')).test('/videos/1') returns false. Why?

(new RegExp('/videos/(\d+)$')) == /\/videos\/(d+)$/

begins with /, then goes videos string, then / again and then d+ which is 1 or more digits, so 1 should match...

3 Answers 3

3

You need to escape the \\:

console.log( (new RegExp('/videos/(\\d+)$')).test('/videos/1') );

Sign up to request clarification or add additional context in comments.

Comments

0

This works:

var s = '/videos/1';
s.match(/\/videos\/(\d+)$/);

As does this:

var regex = new RegExp(/\/videos\/(\d+)$/)
regex.test('/videos/1')

Are you seeing something different?

Comments

0

You should escape special characters in a RegExp constructor:

alert((new RegExp("\\/videos\\/(\\d+)$")).test('/videos/1'))

MDN excerpt:

When using the constructor function, the normal string escape rules (preceding special characters with \ when included in a string) are necessary.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.