Question

My name, e-mail and check boxes follow the same js pattern and the validation works great but birthday will not validate. I start by stripping the white space so they can't leave it blank, then using a regex to determine if its valid. Is my regex wrong?

validate: function (attrs, options) 
{
    var errors = [],
    pattern = '/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d+$/',
    isValidBirthday = attrs.birthday && attrs.birthday.replace(/\s/g, '') && attrs.birthday === ('pattern');

    if (!isValidBirthday) 
    {
        errors.push(
        {
            "birthday": "Must have a valid birth date."
        });
    }

    if (errors.length) 
    {
        return errors;
    }
},
Was it helpful?

Solution

You are using the regular expression wrong. Try the following instead, noting the lack of '' around the regex, and the use of .test method on the pattern.

var errors = [],
    pattern = /^(0[1-9]|1[0-2])[-/.](0[1-9]|[12][0-9]|3[01])[-/.](19|20)\d\d$/,
    isValidBirthday,
    cleanedBirthday;

cleanedBirthday = attrs.birthday && attrs.birthday.replace(/\s/g, '');
isValidBirthday = pattern.test(cleanedBirthday)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top