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
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_-]+)