I’m having trouble creating a Regex to match URL slugs (basically, alphanumeric “words” separated by single dashes)
JavaScript
x
this-is-an-example
I’ve come up with this Regex: /[a-z0-9-]+$/
and while it restricts the string to only alphanumerical characters and dashes, it still produces some false positives like these:
JavaScript
-example
example-
this-----is---an--example
-
I’m quite bad with regular expressions, so any help would be appreciated.
Advertisement
Answer
You can use this:
JavaScript
/^
[a-z0-9]+ # One or more repetition of given characters
(?: # A non-capture group.
- # A hyphen
[a-z0-9]+ # One or more repetition of given characters
)* # Zero or more repetition of previous group
$/
This will match:
- A sequence of alphanumeric characters at the beginning.
- Then it will match a hyphen, then a sequence of alphanumeric characters, 0 or more times.