I am trying to add a simple regular expression validation to one of my observables using Knockout-Validation.
I have the following:
self.ContactPhone = ko.observable().extend({
required: true,
pattern: {
message: 'Invalid phone number.',
params: '^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$'
}
});
However, no matter what I enter, it returns the message 'Invalid phone number.' Is there a certain way I need to format the expression? I've tested it using purely JavaScript and it works fine.
You need to escape your backslashes otherwise javascript treats your one backslash itself as an escape-character for the next character. This is because this is a string and not a regexp literal.
Edit: Actually I just checked, and you can just use a regexp literal instead, so either of these would do it:
http://jsfiddle.net/antishok/ED3Mh/2/
self.ContactPhone = ko.observable().extend({
required: true,
pattern: {
message: 'Invalid phone number.',
params: /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/
}
});
or:
params: '^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$'