Search code examples
jqueryregexjquery-validate

jQuery validate: How to add a rule for regular expression validation?


I am using the jQuery validation plugin. Great stuff! I want to migrate my existing ASP.NET solution to use jQuery instead of the ASP.NET validators. I am missing a replacement for the regular expression validator. I want to be able to do something like this:

$("Textbox").rules("add", { regularExpression: "^[a-zA-Z'.\s]{1,40}$" })

How do I add a custom rule to achieve this?


Solution

  • Thanks to the answer of redsquare I added a method like this:

    $.validator.addMethod(
      "regex",
      function(value, element, regexp) {
        var re = new RegExp(regexp);
        return this.optional(element) || re.test(value);
      },
      "Please check your input."
    );
    

    Now all you need to do to validate against any regex is this:

    $("#Textbox").rules("add", { regex: "^[a-zA-Z'.\\s]{1,40}$" })
    

    Additionally, it looks like there is a file called additional-methods.js that contains the method "pattern", which can be a RegExp when created using the method without quotes.


    Edit

    The pattern function is now the preferred way to do this, making the example:

    $("#Textbox").rules("add", { pattern: "^[a-zA-Z'.\\s]{1,40}$" })