自动排除了 lib,导致js 不全
This commit is contained in:
243
static/src/js/lib/formValidation/validator/phone.js
Executable file
243
static/src/js/lib/formValidation/validator/phone.js
Executable file
@@ -0,0 +1,243 @@
|
||||
/**
|
||||
* phone validator
|
||||
*
|
||||
* @link http://formvalidation.io/validators/phone/
|
||||
* @author https://twitter.com/nghuuphuoc
|
||||
* @copyright (c) 2013 - 2015 Nguyen Huu Phuoc
|
||||
* @license http://formvalidation.io/license/
|
||||
*/
|
||||
|
||||
(function(root, factory) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// AMD module is defined
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define("validator/phone", ["jquery", "base"], factory);
|
||||
} else {
|
||||
// planted over the root!
|
||||
factory(root.jQuery, root.FormValidation);
|
||||
}
|
||||
|
||||
}(this, function ($, FormValidation) {
|
||||
FormValidation.I18n = $.extend(true, FormValidation.I18n || {}, {
|
||||
'en_US': {
|
||||
phone: {
|
||||
'default': 'Please enter a valid phone number',
|
||||
country: 'Please enter a valid phone number in %s',
|
||||
countries: {
|
||||
AE: 'United Arab Emirates',
|
||||
BG: 'Bulgaria',
|
||||
BR: 'Brazil',
|
||||
CN: 'China',
|
||||
CZ: 'Czech Republic',
|
||||
DE: 'Germany',
|
||||
DK: 'Denmark',
|
||||
ES: 'Spain',
|
||||
FR: 'France',
|
||||
GB: 'United Kingdom',
|
||||
IN: 'India',
|
||||
MA: 'Morocco',
|
||||
NL: 'Netherlands',
|
||||
PK: 'Pakistan',
|
||||
RO: 'Romania',
|
||||
RU: 'Russia',
|
||||
SK: 'Slovakia',
|
||||
TH: 'Thailand',
|
||||
US: 'USA',
|
||||
VE: 'Venezuela'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
FormValidation.Validator.phone = {
|
||||
html5Attributes: {
|
||||
message: 'message',
|
||||
country: 'country'
|
||||
},
|
||||
|
||||
// The supported countries
|
||||
COUNTRY_CODES: ['AE', 'BG', 'BR', 'CN', 'CZ', 'DE', 'DK', 'ES', 'FR', 'GB', 'IN', 'MA', 'NL', 'PK', 'RO', 'RU', 'SK', 'TH', 'US', 'VE'],
|
||||
|
||||
/**
|
||||
* Return true if the input value contains a valid phone number for the country
|
||||
* selected in the options
|
||||
*
|
||||
* @param {FormValidation.Base} validator Validate plugin instance
|
||||
* @param {jQuery} $field Field element
|
||||
* @param {Object} options Consist of key:
|
||||
* - message: The invalid message
|
||||
* - country: The ISO-3166 country code. It can be
|
||||
* - A country code
|
||||
* - Name of field which its value defines the country code
|
||||
* - Name of callback function that returns the country code
|
||||
* - A callback function that returns the country code
|
||||
*
|
||||
* @returns {Boolean|Object}
|
||||
*/
|
||||
validate: function(validator, $field, options) {
|
||||
var value = validator.getFieldValue($field, 'phone');
|
||||
if (value === '') {
|
||||
return true;
|
||||
}
|
||||
|
||||
var locale = validator.getLocale(),
|
||||
country = options.country;
|
||||
if (typeof country !== 'string' || $.inArray(country, this.COUNTRY_CODES) === -1) {
|
||||
// Try to determine the country
|
||||
country = validator.getDynamicOption($field, country);
|
||||
}
|
||||
|
||||
if (!country || $.inArray(country.toUpperCase(), this.COUNTRY_CODES) === -1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var isValid = true;
|
||||
switch (country.toUpperCase()) {
|
||||
case 'AE':
|
||||
// Test: http://regexr.com/39tak
|
||||
value = $.trim(value);
|
||||
isValid = (/^(((\+|00)?971[\s\.-]?(\(0\)[\s\.-]?)?|0)(\(5(0|2|5|6)\)|5(0|2|5|6)|2|3|4|6|7|9)|60)([\s\.-]?[0-9]){7}$/).test(value);
|
||||
break;
|
||||
|
||||
case 'BG':
|
||||
// Test cases can be found here: https://regex101.com/r/yE6vN4/1
|
||||
// See http://en.wikipedia.org/wiki/Telephone_numbers_in_Bulgaria
|
||||
value = value.replace(/\+|\s|-|\/|\(|\)/gi,'');
|
||||
isValid = (/^(0|359|00)(((700|900)[0-9]{5}|((800)[0-9]{5}|(800)[0-9]{4}))|(87|88|89)([0-9]{7})|((2[0-9]{7})|(([3-9][0-9])(([0-9]{6})|([0-9]{5})))))$/).test(value);
|
||||
break;
|
||||
|
||||
case 'BR':
|
||||
// Test: http://regexr.com/399m1
|
||||
value = $.trim(value);
|
||||
isValid = (/^(([\d]{4}[-.\s]{1}[\d]{2,3}[-.\s]{1}[\d]{2}[-.\s]{1}[\d]{2})|([\d]{4}[-.\s]{1}[\d]{3}[-.\s]{1}[\d]{4})|((\(?\+?[0-9]{2}\)?\s?)?(\(?\d{2}\)?\s?)?\d{4,5}[-.\s]?\d{4}))$/).test(value);
|
||||
break;
|
||||
|
||||
case 'CN':
|
||||
// http://regexr.com/39dq4
|
||||
value = $.trim(value);
|
||||
isValid = (/^((00|\+)?(86(?:-| )))?((\d{11})|(\d{3}[- ]{1}\d{4}[- ]{1}\d{4})|((\d{2,4}[- ]){1}(\d{7,8}|(\d{3,4}[- ]{1}\d{4}))([- ]{1}\d{1,4})?))$/).test(value);
|
||||
break;
|
||||
|
||||
case 'CZ':
|
||||
// Test: http://regexr.com/39hhl
|
||||
isValid = /^(((00)([- ]?)|\+)(420)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(value);
|
||||
break;
|
||||
|
||||
case 'DE':
|
||||
// Test: http://regexr.com/39pkg
|
||||
value = $.trim(value);
|
||||
isValid = (/^(((((((00|\+)49[ \-/]?)|0)[1-9][0-9]{1,4})[ \-/]?)|((((00|\+)49\()|\(0)[1-9][0-9]{1,4}\)[ \-/]?))[0-9]{1,7}([ \-/]?[0-9]{1,5})?)$/).test(value);
|
||||
break;
|
||||
|
||||
case 'DK':
|
||||
// Mathing DK phone numbers with country code in 1 of 3 formats and an
|
||||
// 8 digit phone number not starting with a 0 or 1. Can have 1 space
|
||||
// between each character except inside the country code.
|
||||
// Test: http://regex101.com/r/sS8fO4/1
|
||||
value = $.trim(value);
|
||||
isValid = (/^(\+45|0045|\(45\))?\s?[2-9](\s?\d){7}$/).test(value);
|
||||
break;
|
||||
|
||||
case 'ES':
|
||||
// http://regex101.com/r/rB9mA9/1
|
||||
// Telephone numbers in Spain go like this:
|
||||
// 9: Landline phones and special prefixes.
|
||||
// 6, 7: Mobile phones.
|
||||
// 5: VoIP lines.
|
||||
// 8: Premium-rate services.
|
||||
// There are also special 5-digit and 3-digit numbers, but
|
||||
// maybe it would be overkill to include them all.
|
||||
value = $.trim(value);
|
||||
isValid = (/^(?:(?:(?:\+|00)34\D?))?(?:5|6|7|8|9)(?:\d\D?){8}$/).test(value);
|
||||
break;
|
||||
|
||||
case 'FR':
|
||||
// http://regexr.com/39a2p
|
||||
value = $.trim(value);
|
||||
isValid = (/^(?:(?:(?:\+|00)33[ ]?(?:\(0\)[ ]?)?)|0){1}[1-9]{1}([ .-]?)(?:\d{2}\1?){3}\d{2}$/).test(value);
|
||||
break;
|
||||
|
||||
case 'GB':
|
||||
// http://aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers#Match_GB_telephone_number_in_any_format
|
||||
// Test: http://regexr.com/38uhv
|
||||
value = $.trim(value);
|
||||
isValid = (/^\(?(?:(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?\(?(?:0\)?[\s-]?\(?)?|0)(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}|\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4}|\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3})|\d{5}\)?[\s-]?\d{4,5}|8(?:00[\s-]?11[\s-]?11|45[\s-]?46[\s-]?4\d))(?:(?:[\s-]?(?:x|ext\.?\s?|\#)\d+)?)$/).test(value);
|
||||
break;
|
||||
|
||||
case 'IN':
|
||||
// http://stackoverflow.com/questions/18351553/regular-expression-validation-for-indian-phone-number-and-mobile-number
|
||||
// Test: http://regex101.com/r/qL6eZ5/1
|
||||
// May begin with +91. Supports mobile and land line numbers
|
||||
value = $.trim(value);
|
||||
isValid = (/((\+?)((0[ -]+)*|(91 )*)(\d{12}|\d{10}))|\d{5}([- ]*)\d{6}/).test(value);
|
||||
break;
|
||||
|
||||
case 'MA':
|
||||
// http://en.wikipedia.org/wiki/Telephone_numbers_in_Morocco
|
||||
// Test: http://regexr.com/399n8
|
||||
value = $.trim(value);
|
||||
isValid = (/^(?:(?:(?:\+|00)212[\s]?(?:[\s]?\(0\)[\s]?)?)|0){1}(?:5[\s.-]?[2-3]|6[\s.-]?[13-9]){1}[0-9]{1}(?:[\s.-]?\d{2}){3}$/).test(value);
|
||||
break;
|
||||
|
||||
case 'NL':
|
||||
// https://regex101.com/r/mX2wJ2/1
|
||||
value = $.trim(value);
|
||||
isValid = (/(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)/).test(value);
|
||||
break;
|
||||
|
||||
case 'PK':
|
||||
// http://regex101.com/r/yH8aV9/2
|
||||
value = $.trim(value);
|
||||
isValid = (/^0?3[0-9]{2}[0-9]{7}$/).test(value);
|
||||
break;
|
||||
|
||||
case 'RO':
|
||||
// All mobile network and land line
|
||||
// http://regexr.com/39fv1
|
||||
isValid = (/^(\+4|)?(07[0-8]{1}[0-9]{1}|02[0-9]{2}|03[0-9]{2}){1}?(\s|\.|\-)?([0-9]{3}(\s|\.|\-|)){2}$/g).test(value);
|
||||
break;
|
||||
|
||||
case 'RU':
|
||||
// http://regex101.com/r/gW7yT5/5
|
||||
isValid = (/^((8|\+7|007)[\-\.\/ ]?)?([\(\/\.]?\d{3}[\)\/\.]?[\-\.\/ ]?)?[\d\-\.\/ ]{7,10}$/g).test(value);
|
||||
break;
|
||||
|
||||
case 'SK':
|
||||
// Test: http://regexr.com/39hhl
|
||||
isValid = /^(((00)([- ]?)|\+)(420)([- ]?))?((\d{3})([- ]?)){2}(\d{3})$/.test(value);
|
||||
break;
|
||||
|
||||
case 'TH':
|
||||
// http://regex101.com/r/vM5mZ4/2
|
||||
isValid = (/^0\(?([6|8-9]{2})*-([0-9]{3})*-([0-9]{4})$/).test(value);
|
||||
break;
|
||||
|
||||
case 'VE':
|
||||
// http://regex101.com/r/eM2yY0/6
|
||||
value = $.trim(value);
|
||||
isValid = (/^0(?:2(?:12|4[0-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$/).test(value);
|
||||
break;
|
||||
|
||||
case 'US':
|
||||
/* falls through */
|
||||
default:
|
||||
// Make sure US phone numbers have 10 digits
|
||||
// May start with 1, +1, or 1-; should discard
|
||||
// Area code may be delimited with (), & sections may be delimited with . or -
|
||||
// Test: http://regexr.com/38mqi
|
||||
isValid = (/^(?:(1\-?)|(\+1 ?))?\(?(\d{3})[\)\-\.]?(\d{3})[\-\.]?(\d{4})$/).test(value);
|
||||
break;
|
||||
}
|
||||
|
||||
return {
|
||||
valid: isValid,
|
||||
message: FormValidation.Helper.format(options.message || FormValidation.I18n[locale].phone.country, FormValidation.I18n[locale].phone.countries[country])
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
return FormValidation.Validator.phone;
|
||||
}));
|
||||
Reference in New Issue
Block a user