Resulta que estoy intentando validar ISBNs con javascript y he encontrado en internet un script que supuestamente lo hace. El problema está en que analizando con la consola de javascript de chrome me sale un pequeño error que hace que no funcione.
El error en cuestión es:
Invalid regular expression: missing /
Y el código del script es el siguiente:
Código:
Está sacado de http://my.safaribooksonline.com/book/programming/regular-expressions/9780596802837/4dot-validation-and-formatting/id2990038// `regex` checks for ISBN-10 or ISBN-13 format var regex = /^(?:ISBN(?:-1[03])?:? )?(?=[-0-9 ]{17}$|[-0-9X ]{13}$|? [0-9X]{10}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?(?:[0-9]+[- ]?){2}[0-9X]$/; if (regex.test(subject)) { // Remove non ISBN digits, then split into an array var chars = subject.replace(/[^0-9X]/g, "").split(""); // Remove the final ISBN digit from `chars`, and assign it to `last` var last = chars.pop(); var sum = 0; var digit = 10; var check; if (chars.length == 9) { // Compute the ISBN-10 check digit for (var i = 0; i < chars.length; i++) { sum += digit * parseInt(chars[i], 10); digit -= 1; } check = 11 - (sum % 11); if (check == 10) { check = "X"; } else if (check == 11) { check = "0"; } } else { // Compute the ISBN-13 check digit for (var i = 0; i < chars.length; i++) { sum += (i % 2 * 2 + 1) * parseInt(chars[i], 10); } check = 10 - (sum % 10); if (check == 10) { check = "0"; } } if (check == last) { alert("Valid ISBN"); } else { alert("Invalid ISBN check digit"); } } else { alert("Invalid ISBN"); }
¿Qué podría hacer para evitar el error y así conseguir validar al rellenar un campo input de html?