Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
1.1 kB
2
Indexable
Never
function verificaCNP(cnp) {
  if (cnp.length !== 13) {
    return false; // Lungimea CNP-ului trebuie să fie de exact 13 caractere.
  }

  // Extrage primele 12 cifre din CNP.
  var cifre = cnp.slice(0, 12);

  // Verificăm dacă cifrele sunt numerice.
  if (!/^\d+$/.test(cifre)) {
    return false;
  }

  // Se calculează cifra de control (ultima cifră din CNP).
  var cifraControl = parseInt(cnp[12], 10);

  // Se calculează suma cifrelor din CNP înmulțite cu ponderile corespunzătoare.
  var ponderi = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];
  var suma = 0;
  for (var i = 0; i < 12; i++) {
    suma += parseInt(cifre[i], 10) * ponderi[i];
  }

  // Se calculează restul împărțirii sumei la 11.
  var rest = suma % 11;

  // Se verifică dacă cifra de control este corectă.
  if (rest === 10) {
    return cifraControl === 1;
  } else {
    return cifraControl === rest;
  }
}

// Exemplu de utilizare:
var cnp = "1881229399999"; // Înlocuiți cu CNP-ul dvs.
if (verificaCNP(cnp)) {
  console.log("CNP-ul este corect.");
} else {
  console.log("CNP-ul este incorect.");
}