Reputation: 32258
Im not sure how I can achieve this match expression. Currently I am using,
([A-Za-z0-9-]+)
...which matches letters and numbers. I would also like to match on dashes and underscores in the same expression. Anyone know how?
I would like to be able to match product_name and product-name
Upvotes: 80
Views: 164173
Reputation: 3501
You can indeed match all those characters, but it's safer to escape the -
so that it is clear that it be taken literally.
If you are using a POSIX variant you can opt to use:
([[:alnum:]\-_]+)
But a since you are including the underscore I would simply use:
([\w\-]+)
(works in all variants)
Upvotes: 2
Reputation: 838076
Depending on your regex variant, you might be able to do simply this:
([\w-]+)
Also, you probably don't need the parentheses unless this is part of a larger expression.
Upvotes: 21
Reputation: 34128
Just escape the dashes to prevent them from being interpreted (I don't think underscore needs escaping, but it can't hurt). You don't say which regex you are using.
([A-Za-z0-9\-\_]+)
Upvotes: 138
Reputation: 18743
Your expression should already match dashes, because the final - will not be interpreted as a range operator (since the range has no end). To add underscores as well, try:
([A-Za-z0-9_-]+)
Upvotes: 22