I’m having trouble creating a Regex to match URL slugs (basically, alphanumeric “words” separated by single dashes)
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:
-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:
/^ [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.