0

I'm trying to find the exact match for the following strings;

/test/anyAlphaNumericId123
/test/anyAlphaNumericId123/

That will not match the following

/test/anyAlphaNumericId123/x

I have the following Regex currently, which matches both former cases and not the latter;

/(\/test\/)(.*?)(\/|$)/

But on attempting to call str.match on it, I will also get a result for the latter, as it has a partial match. Can I accomplish this with Regex alone?

1 Answer 1

1

You can write the pattern as:

^\/test\/[a-zA-Z0-9]+\/?$

The pattern matches:

  • ^ Start of string
  • \/test\/ Match /test/
  • [a-zA-Z0-9]+ Match 1+ times any of the allowed ranges
  • \/? Match an optional /
  • $ End of string

Regex demo

Example using a case insensitive match with the /i flag:

const regex = /^\/test\/[a-z0-9]+\/?$/i;
[
  "/test/anyAlphaNumericId123",
  "/test/anyAlphaNumericId123/",
  "/test/anyAlphaNumericId123/x"
].forEach(s =>
  console.log(regex.test(s) ? `Match: ${s}` : `No match ${s}`)
);

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

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.