nuevo en esto, así que espero que mi pregunta sea lo suficientemente específica para que tenga sentido.
Estoy tratando de crear una página web que valide un "Número de estudiante" ---
Por ejemplo, A89071231 sería un número de estudiante válido, pero A00000000 no lo sería, ni solo "A" o "A123".
La entrada del usuario debe ser A + exactamente 8 dígitos que no sean todos ceros.
Lo que tengo hasta ahora es esto a continuación. Donde "StudentNo" = una etiqueta de identificación HTML y la función "calcular" es totalizar el promedio de calificaciones de los estudiantes.
Solo necesito ayuda para descubrir cómo escribir el código para que cada dígito que sigue al primer carácter A pueda ser cualquier cosa entre 0-9 y aún así dar una entrada válida, además de una situación en la que el usuario ingresa todos los 0 después de la "A".
Pensé que regex sería la forma más fácil de hacerlo, o usando substr() o substring() pero no estoy muy familiarizado con JavaScript y parece que no puedo entender dónde me estoy equivocando.
¡¡¡Gracias por cualquier ayuda que usted puede dar!!!
function calculate(); var sno = $("StudentNo").value.trim(); if(sno === "" || !sno.startsWith("A") { alert("Student Number is missing, please enter your Student A Number."); $("StudentNo").focus(); return; }Solo tienes que manejar 3 condiciones como
1) !sno.startsWith("A")
2) sno.length !== 9
3) sno.slice(1).match(/0{8}/)
function validateSNo(sno) { if (!sno.startsWith("A") || sno.length !== 9 || sno.slice(1).match(/0{8}/)) { // alert("Student Number is missing, please enter your Student A Number."); // $("StudentNo").focus(); console.log( "Student Number is missing, please enter your Student A Number." ); } else { console.log("Perfect student number") } } validateSNo("S"); validateSNo("A00000000"); validateSNo("A123"); validateSNo("A12345678");Espero que las siguientes respuestas te ayuden.
He comprobado lo siguiente piensa
Fragmento de código
function checkStudentNumber(studentNumber){ var sno = studentNumber; // get student number var checkInitialCharacter = sno.charAt(0) === "A" ? true : false; // check studentno first character A or not, if A output will be true var exeptFirstLetter = sno.slice(1); // Separate execpt first character from string var checkexeptFirstLetterCharactersLength = exeptFirstLetter.length == 8 ? true : false; // character separated charactee count qual to 8 or not, if YES output will be true. var checkExceptFirstCharacters = /^\d+$/.test(exeptFirstLetter) ? true : false; // confirm rest of the first character has only numbers. var convertExecptFirstlettersintoNumber = checkExceptFirstCharacters ? parseFloat(exeptFirstLetter) : null; // convert rest of the first character into number var checkZeroValues = convertExecptFirstlettersintoNumber === 0 ? true : false; // check rest of the first character has only zero digits or not, if(!checkInitialCharacter || checkZeroValues || !checkexeptFirstLetterCharactersLength || !checkExceptFirstCharacters ){ alert(studentNumber + " : Student Number is missing, please enter your Student A Number."); } else { alert(studentNumber + " : Perfect student number"); } } checkStudentNumber("A00000000"); // Output: Student Number is missing, please enter your Student A Number. checkStudentNumber("B00000000"); // Output: Student Number is missing, please enter your Student A Number. checkStudentNumber("A12345"); // Output: Student Number is missing, please enter your Student A Number. checkStudentNumber("A12345678"); // Output: Perfect student number. checkStudentNumber("ABCD78"); // Output: Student Number is missing, please enter your Student A Number. checkStudentNumber("A0000000B"); // Output: Student Number is missing, please enter your Student A Number. checkStudentNumber("A12345B78"); // Output: Student Number is missing, please enter your Student A Number. checkStudentNumber("A45645678"); // Output: Perfect student number.Debería poder usar expresiones regulares con aserción de anticipación negativa , usando el grupo: (?!0{8}) . Seguiríamos esto con los 8 dígitos requeridos (\d{8}) .
Envolveríamos esto en una función checkStudentNumber() , que toma el número de estudiante como el único parámetro y devuelve un valor booleano verdadero/falso que indica si el número es válido.
function checkStudentNumber(number) { return /^A(?!0{8})(\d{8})$/.test(number) } const numbers = ['A12345670', 'A00000001', 'A00010000', 'A12345678','A00000000', 'A1234567', 'A123456789', 'GARBAGE']; console.log('Tests:'); console.log('\nNumber \tValid'); numbers.forEach(number => console.log(number.padEnd(8, ' '), '\t', checkStudentNumber(number) ? 'Yes': 'No')); .as-console-wrapper { max-height: 100% !important; top: 0; }