verificador validar validador valida tarjetas tarjeta regulares para falsas expresiones credito con algoritmo javascript validation luhn

javascript - validar - Validación del lado del cliente de las tarjetas de crédito



validar tarjeta de credito php (6)

El complemento de validación jQuery tiene un método para validar números de tarjetas de crédito.

Hay otros scripts específicos:

La mayoría usa el algoritmo de Luhn .

¿Alguien tiene una biblioteca o un fragmento de JavaScript para validar el dígito de verificación de las tarjetas de crédito antes de que el usuario acceda a Enviar?



Probablemente, OP ya no siga este hilo, pero esto puede ser útil para otra persona:

http://jquerycreditcardvalidator.com

Comprueba el tipo de tarjeta, valida su longitud y comprueba el mod 10 con el algoritmo de Luhn.


Puede usar este fragmento para validar números de tarjeta de 16 dígitos con el algoritmo de Luhn :

function validateCardNumber(number) { var regex = new RegExp("^[0-9]{16}$"); if (!regex.test(number)) return false; return luhnCheck(number); } function luhnCheck(val) { var sum = 0; for (var i = 0; i < val.length; i++) { var intVal = parseInt(val.substr(i, 1)); if (i % 2 == 0) { intVal *= 2; if (intVal > 9) { intVal = 1 + (intVal % 10); } } sum += intVal; } return (sum % 10) == 0; }


La fórmula de Luhn es el algoritmo más popular en la validación de tarjetas de crédito. Y no tengas tanto miedo de la palabra algorithm que estás buscando una biblioteca. Es increíblemente fácil de entender. De la descripción de Wikipedia, este algoritmo se puede dividir en 3 pasos:

  • Desde el dígito que está más a la derecha, que es el dígito de control, moviéndose hacia la izquierda, duplique el valor de cada segundo dígito; si el producto de esta operación de duplicación es mayor que 9 (p. ej., 8 × 2 = 16), sume los dígitos de los productos (p. ej., 16: 1 + 6 = 7, 18: 1 + 8 = 9).
  • Tome la suma de todos los dígitos.
  • Si el módulo total 10 es igual a 0 (si el total termina en cero), entonces el número es válido de acuerdo con la fórmula de Luhn; De lo contrario, no es válido.

Aquí está mi borrador de trabajo.

function luhn(anum){ anum = anum+''''; var sum = 0, max = anum.length - 1; //From the rightmost digit, which is the check digit, moving left for(var j=max;j>=0;j--){ var digit = parseInt(anum[j]); //Take the sum of all the digits if((max - j) & 1){ //double the value of every second digit var add = digit * 2; //if the product of this doubling operation is greater than 9 , //then sum the digits of the products sum += add < 10 ? add : 1 + add % 10; }else{ sum += digit; } } //If the total modulo 10 is equal to 0 (if the total ends in zero) //then the number is valid according to the Luhn formula;else it is not valid. return sum % 10 === 0; } luhn(79927398713) -> true


El algoritmo Luhn (también conocido como fórmula Luhn ) es útil para validar una variedad de números de identificación (por ejemplo, números de tarjetas de crédito , IMEI ).

Omito la explicación del algoritmo porque ya ha sido expuesto por otros, pero si necesita la implementación de JavaScript más rápida , puede verla aquí .

En pocas palabras ...

function luhn(array) { return function (number) { let len = number ? number.length : 0, bit = 1, sum = 0; while (len--) { sum += !(bit ^= 1) ? parseInt(number[len], 10) : array[number[len]]; } return sum % 10 === 0 && sum > 0; }; }([0, 2, 4, 6, 8, 1, 3, 5, 7, 9]);

Tenga en cuenta que el origen vinculado está en lenguaje ES6 (también conocido como JavaScript 2015), pero se transporta en ES5 (consulte index.js ) y está totalmente probado por unidades.

Además, se puede usar tanto en navegadores como en node.js.

Los puntos de referencia y otras implementaciones están en jsperf para verificar sus altos rendimientos.

Ahora, si simplemente quiere usarlo, tome el código del repositorio vinculado.

De lo contrario, instálelo en bower ...

bower install luhn-alg

O vía npm ...

npm install luhn-alg

Descargo de responsabilidad: soy el autor del paquete luhn-alg .