/**
* Validates that the value is a valid phone.
*/
Ext.define('Ext.data.validator.Phone', {
extend: 'Ext.data.validator.Format',
alias: 'data.validator.phone',
type: 'phone',
// https://www.sitepoint.com/community/t/phone-number-regular-expression-validation/2204/2
// (modified)
/**
* @cfg {String} message
* The error message to return when the value is not a valid phone.
* @locale
*/
message: 'Is not a valid phone number',
/**
* @cfg {RegExp} matcher
* A matcher to check for simple phones. This may be overridden.
*/
matcher: new RegExp(
'^ *' +
// optional country code
'(?:' +
'\\+?' + // maybe + prefix
'(\\d{1,3})' +
// optional separator
'[- .]?' +
')?' +
// optional area code
'(?:' +
'(?:' +
'(\\d{3})' + // without ()
'|' +
'\\((\\d{3})\\)' + // with ()
')?' +
// optional separator
'[- .]?' +
')' +
// CO code (3 digit prefix)
'(?:' +
'([2-9]\\d{2})' +
// optional separator
'[- .]?' +
')' +
// line number (4 digits)
'(\\d{4})' +
// optional extension
'(?: *(?:e?xt?) *(\\d*))?' +
' *$'
)
});