Input Validation
Single Line fields provide a simple way for users to validate user-entered content. The properties settings for this field type allow you to specify a pattern to match and an error message.
The pattern are easy to enter by following the instructions in the help text (below). Regular expressions (discussed below) can also be entered.
The rest of this page is dedicated to providing additional ways of validating field input. This function can be used to enforce a regular expression (regex) pattern on the specified field and will set the field to invalid if it does not match.
app.getSharedData().validateByPattern = function(theItem, pattern, errMsg) { if(!pattern.test(theItem.getValue())) { theItem.getBOAttr().setValid(false, errMsg); } else { theItem.getBOAttr().setValid(true, ""); } }
Usage:
For example, you may want to validate a single line field as a US based phone number. In the onItemChange event of the field you would place:
app.getSharedData().validateByPattern(item, /^\(\d{3}\) \d{3}-\d{4}$/, "The number provided does not meet the required format");
Note: The pattern must not be passed in quotes!
There are a lot of good references online for regular expressions to validate certain patterns.
US Phone Number
Simple -
var patt =/^\(\d{3}\) \d{3}-\d{4}$/;
Complex - http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation
Canadian Postal Code
var patt = /^[a-z][0-9][a-z] [0-9][a-z][0-9]$/;
US Zip Code
var patt = /^\d{5}(-\d{4})?$/;
IP Address
var patt = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i;