a URL slug
Matches a URL slug. It is anchored at both ends, so the whole string has to match. There are no capture groups.
Pattern
/^[a-z0-9]+(?:-[a-z0-9]+)*$/- Match scope
- the whole string
- Capture groups
- 0
- What it catches in the first example
- hello-world
Try it yourself
Type any text and the parts this expression catches are highlighted. It runs in your browser and is never sent anywhere.
hello-world
1 match
Examples that match
- hello-world
- a1
Examples that do not match
- Hello-World
- hello--world
- -hello
Other expressions in this group
^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$a base64-encoded string^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$a JWT split by two dots^\+[1-9]\d{7,14}$a phone number in international form^[a-z][a-z0-9_]{2,15}$a username that starts with a letter^[^\\/:*?"<>|]+\.[a-z0-9]+$a file name with an extension^.+\.(?:jpe?g|png|gif|webp|avif|svg)$an image file extension^/(?:[^/\0]+/)*[^/\0]*$a Unix-style path^[A-Za-z]:\\(?:[^\\/:*?"<>|]+\\)*[^\\/:*?"<>|]*$a Windows pathHow to read this
- With ^ and $ around it, the whole string must match; without them the match can sit anywhere. Always anchor an expression you use for validation.
- Round brackets ( ) capture what they wrap. When you only need grouping, write (?: ) so the numbering of later groups does not shift.
- Every expression here is checked against its examples. Even so, "looks like an email" and "is a real inbox" remain different questions.
- Nested open-ended repeats such as (a+)+ can blow up on certain inputs. Look for that shape before pasting someone else’s expression into your code.
Frequently asked questions
Q. What is the regex for a URL slug?
^[a-z0-9]+(?:-[a-z0-9]+)*$.
Q. Which strings match?
Text like hello-world matches; text like Hello-World does not.
Q. Does the whole string have to match?
Yes. It is wrapped in ^ and $, so nothing but a full match passes.
Q. How do I use what it caught?
There are no capture groups, so only the whole match (match[0]) comes back. Wrap the part you need in brackets to capture it.