Alphanumeric, dash and underscore but no spaces regular expression check JavaScript

Trying to check input against a regular expression.

The field should only allow alphanumeric characters, dashes and underscores and should NOT allow spaces.

However, the code below allows spaces.

What am I missing?

var regexp = /^[a-zA-Z0-9\-\_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
    { alert('invalid'); }
else
    { alert('valid'); }

10 thoughts on “Alphanumeric, dash and underscore but no spaces regular expression check JavaScript”

  1. 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-_]+$/;
    
    Reply
  2. Got stupid error. So post here, if anyone find it useful

    1. [-\._] – means hyphen, dot and underscore
    2. [\.-_] – means all signs in range from dot to underscore
    Reply
  3. 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.

    Reply

Leave a Comment