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.