Trying to check input against a regular expression.
The field should only allow alphanumeric characters, dashes and underscores and should NOT allow spaces.
Don't escape the underscore. Might be causing some whackness.
try this one, it is working fine for me.
"^([a-zA-Z])[a-zA-Z0-9-_]*$"
However, the code below allows spaces.
No, it doesn't. However, it will only match on input with a length of 1. For inputs with a length greater than or equal to 1, you need a +
following the character class:
var regexp = /^[a-zA-Z0-9-_]+$/;
var check = "checkme";
if (check.search(regexp) === -1)
{ alert('invalid'); }
else
{ alert('valid'); }
Note that neither the -
(in this instance) nor the _
need escaping.
Try this
"[A-Za-z0-9_-]+"
Should allow underscores and hyphens
This syntax is a little more concise than the answers that have been posted to this point and achieves the same result:
let regex = /^[\w-]+$/;
You shouldn't use String.match but RegExp.prototype.test (i.e. /abc/.test("abcd")
) instead of String.search() if you're only interested in a boolean value. You also need to repeat your character class as explained in the answer by Andy E:
var regexp = /^[a-zA-Z0-9-_]+$/;