|
67 | 67 | var alpha = {
|
68 | 68 | 'en-US': /^[A-Z]+$/i,
|
69 | 69 | 'de-DE': /^[A-ZÄÖÜß]+$/i,
|
| 70 | + 'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i, |
| 71 | + 'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, |
| 72 | + 'nl-NL': /^[A-ZÉËÏÓÖÜ]+$/i, |
| 73 | + 'pt-PT': /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i |
70 | 74 | }
|
71 | 75 | , alphanumeric = {
|
72 | 76 | 'en-US': /^[0-9A-Z]+$/i,
|
73 |
| - 'de-DE': /^[0-9A-ZÄÖÜß]+$/i |
74 |
| - } |
75 |
| - , numeric = /^[-+]?[0-9]+$/ |
| 77 | + 'de-DE': /^[0-9A-ZÄÖÜß]+$/i, |
| 78 | + 'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i, |
| 79 | + 'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i, |
| 80 | + 'nl-NL': /^[0-9A-ZÉËÏÓÖÜ]+$/i, |
| 81 | + 'pt-PT': /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]+$/i |
| 82 | + }; |
| 83 | + |
| 84 | + var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM']; |
| 85 | + for (var locale, i = 0; i < englishLocales.length; i++) { |
| 86 | + locale = 'en-' + englishLocales[i]; |
| 87 | + alpha[locale] = alpha['en-US']; |
| 88 | + alphanumeric[locale] = alphanumeric['en-US']; |
| 89 | + } |
| 90 | + |
| 91 | + var numeric = /^[-+]?[0-9]+$/ |
76 | 92 | , int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/
|
77 | 93 | , float = /^(?:[-+]?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/
|
78 | 94 | , hexadecimal = /^[0-9A-F]+$/i
|
|
89 | 105 | var base64 = /^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=|[A-Z0-9+\/]{4})$/i;
|
90 | 106 |
|
91 | 107 | var phones = {
|
92 |
| - 'zh-CN': /^(\+?0?86\-?)?((13\d|14[57]|15[^4,\D]|17[678]|18\d)\d{8}|170[059]\d{7})$/, |
93 |
| - 'zh-TW': /^(\+?886\-?|0)?9\d{8}$/, |
94 |
| - 'en-ZA': /^(\+?27|0)\d{9}$/, |
| 108 | + 'en-US': /^(\+?1)?[2-9]\d{2}[2-9](?!11)\d{6}$/, |
| 109 | + 'de-DE': /^(\+?49[ \.\-])?([\(]{1}[0-9]{1,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, |
| 110 | + 'el-GR': /^(\+?30)?(69\d{8})$/, |
95 | 111 | 'en-AU': /^(\+?61|0)4\d{8}$/,
|
| 112 | + 'en-GB': /^(\+?44|0)7\d{9}$/, |
96 | 113 | 'en-HK': /^(\+?852\-?)?[569]\d{3}\-?\d{4}$/,
|
| 114 | + 'en-IN': /^(\+?91|0)?[789]\d{9}$/, |
| 115 | + 'en-NZ': /^(\+?64|0)2\d{7,9}$/, |
| 116 | + 'en-ZA': /^(\+?27|0)\d{9}$/, |
| 117 | + 'en-ZM': /^(\+?26)?09[567]\d{7}$/, |
| 118 | + 'es-ES': /^(\+?34)?(6\d{1}|7[1234])\d{7}$/, |
| 119 | + 'fi-FI': /^(\+?358|0)\s?(4(0|1|2|4|5)?|50)\s?(\d\s?){4,8}\d$/, |
97 | 120 | 'fr-FR': /^(\+?33|0)[67]\d{8}$/,
|
| 121 | + 'nb-NO': /^(\+?47)?[49]\d{7}$/, |
| 122 | + 'nn-NO': /^(\+?47)?[49]\d{7}$/, |
98 | 123 | 'pt-BR': /^(\+?55|0)\-?[1-9]{2}\-?[2-9]{1}\d{3,4}\-?\d{4}$/,
|
99 | 124 | 'pt-PT': /^(\+?351)?9[1236]\d{7}$/,
|
100 |
| - 'el-GR': /^(\+?30)?(69\d{8})$/, |
101 |
| - 'en-GB': /^(\+?44|0)7\d{9}$/, |
102 |
| - 'en-US': /^(\+?1)?[2-9]\d{2}[2-9](?!11)\d{6}$/, |
103 |
| - 'en-ZM': /^(\+?26)?09[567]\d{7}$/, |
104 | 125 | 'ru-RU': /^(\+?7|8)?9\d{9}$/,
|
105 |
| - 'nb-NO': /^(\+?47)?[49]\d{7}$/, |
106 |
| - 'nn-NO': /^(\+?47)?[49]\d{7}$/, |
107 | 126 | 'vi-VN': /^(\+?84|0)?((1(2([0-9])|6([2-9])|88|99))|(9((?!5)[0-9])))([0-9]{7})$/,
|
108 |
| - 'en-NZ': /^(\+?64|0)2\d{7,9}$/, |
109 |
| - 'en-IN': /^(\+?91|0)?[789]\d{9}$/, |
110 |
| - 'es-ES': /^(\+?34)?(6\d{1}|7[1234])\d{7}$/, |
111 |
| - 'de-DE': /^(\+?49[ \.\-])?([\(]{1}[0-9]{1,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/, |
112 |
| - 'fi-FI': /^(\+?358|0)\s?(4(0|1|2|4|5)?|50)\s?(\d\s?){4,8}\d$/ |
| 127 | + 'zh-CN': /^(\+?0?86\-?)?((13\d|14[57]|15[^4,\D]|17[678]|18\d)\d{8}|170[059]\d{7})$/, |
| 128 | + 'zh-TW': /^(\+?886\-?|0)?9\d{8}$/ |
113 | 129 | };
|
114 | 130 |
|
115 | 131 | // from http://goo.gl/0ejHHW
|
|
451 | 467 |
|
452 | 468 | validator.isAlpha = function (str, locale) {
|
453 | 469 | locale = locale || 'en-US';
|
454 |
| - return alpha[locale].test(str); |
| 470 | + if (locale in alpha) { |
| 471 | + return alpha[locale].test(str); |
| 472 | + } |
| 473 | + throw new Error('Invalid locale \'' + locale + '\''); |
455 | 474 | };
|
456 | 475 |
|
457 | 476 | validator.isAlphanumeric = function (str, locale) {
|
458 | 477 | locale = locale || 'en-US';
|
459 |
| - return alphanumeric[locale].test(str); |
| 478 | + if (locale in alphanumeric) { |
| 479 | + return alphanumeric[locale].test(str); |
| 480 | + } |
| 481 | + throw new Error('Invalid locale \'' + locale + '\''); |
460 | 482 | };
|
461 | 483 |
|
462 | 484 | validator.isNumeric = function (str) {
|
|
0 commit comments