Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Regex to not match more than one trailing slash in string

Looking for a regex to not match more than 1 occurrence of a trailing slash

api/v1
/api/v1
/api/2v1/21/
/api/blah/v1/
/api/ether/v1//
/api/23v1///

Expected match

/api/v1
/api/2v1/21/
/api/blah/v1/

What I tried:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

^\/([^?&#\s]*)(^[\/{2,}\s])$

>Solution :

In the pattern that you tried, the second part of the pattern can not match, it asserts the start of the string ^ and then matches a single character in the character class (^[\/{2,}\s])$ directly followed by asserting the end of the string.

^\/([^?&#\s]*)(^[\/{2,}\s])$

              ^^^^^^^^^^^^^^

But you have already asserted the start of the string here ^\/

You can repeat a pattern starting with / followed by repeating 1+ times the character class that you already have:

^(?:\/[^\/?&#\s]+)+\/?$

Explanation

  • ^ Start of string
  • (?:\/[^\/?&#\s]+)+ Repeat 1+ times / and 1+ char other than the listed ones
  • \/? Optional /
  • $ End of string

See a regex demo

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading