Alex Rivera | Logout

Including a hyphen in a regex character bracket?

Asked 2010-09-13T00:04:25.767
106
$.validator.addMethod('AZ09_', function (value) { 
    return /^[a-zA-Z0-9.-_]+$/.test(value); 
}, 'Only letters, numbers, and _-. are allowed');

When I use somehting like test-123 it still triggers as if the hyphen is invalid. I tried \- and --

Edit
Report

2 Answers

43

Escaping the hyphen using \- is the correct way.

I have verified that the expression /^[a-zA-Z0-9.\-_]+$/ does allow hyphens. You can also use the \w class to shorten it to /^[\w.\-]+$/.

(Putting the hyphen last in the expression actually causes it to not require escaping, as it then can't be part of a range, however you might still want to get into the habit of always escaping it.)

answered 2010-09-13T00:06:51.173
4

The \- maybe wasn't working because you passed the whole stuff from the server with a string. If that's the case, you should at first escape the \ so the server side program can handle it too.

  • In a server side string: \\-
  • On the client side: \-
  • In regex (covers): -

Or you can simply put at the and of the [] brackets.

answered 2010-09-13T00:23:22.560

Your Answer