40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
/*
|
|
* The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish
|
|
* authorities to any foreigner.
|
|
*
|
|
* The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal
|
|
* identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to
|
|
* companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.
|
|
*/
|
|
$.validator.addMethod( "nieES", function( value, element ) {
|
|
"use strict";
|
|
|
|
if ( this.optional( element ) ) {
|
|
return true;
|
|
}
|
|
|
|
var nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );
|
|
var validChars = "TRWAGMYFPDXBNJZSQVHLCKET",
|
|
letter = value.substr( value.length - 1 ).toUpperCase(),
|
|
number;
|
|
|
|
value = value.toString().toUpperCase();
|
|
|
|
// Quick format test
|
|
if ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {
|
|
return false;
|
|
}
|
|
|
|
// X means same number
|
|
// Y means number + 10000000
|
|
// Z means number + 20000000
|
|
value = value.replace( /^[X]/, "0" )
|
|
.replace( /^[Y]/, "1" )
|
|
.replace( /^[Z]/, "2" );
|
|
|
|
number = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );
|
|
|
|
return validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;
|
|
|
|
}, "Please specify a valid NIE number." );
|