I\'m looking for a regex that will check if the string only consists of the letters a-z, numbers, underscore (_) and hyphen (-). I have tried this,
You have to put your regex /^a-zA-Z0-9_-$/ in a character class /[...]/.
It means you can match any character in the character class. You should also specify a quantifier, because /^[a-zA-Z0-9_-]$/ will match only one character.
Examples:
/^[a-zA-Z0-9_-]+$/ with the + sign you match it one or more time
/^[a-zA-Z0-9_-]{1,}$/ the same as above
/^[a-zA-Z0-9_-]{10,20}$/ between 10 and 20 character long.
/^[a-zA-Z0-9_-]{15}$/ it has to be exactly 15 characters long. You can use it to check the string length.
You can also use the following keyword to make your regex easy to read:
/^[\w-]+$/ which matches a word character (including underscore, letters and digits) or a dash, one or more time.