SevdanurGenc's picture
Upload 60 files
63f6453 verified
Raw History Blame Contribute Delete
1.83 kB
/** Form doğrulayıcıları. */
function isValidEmail(email) {
if (typeof email !== 'string') return false;
const re = /^[^\s@]+@[^\s@]+\.[a-z]{2,}$/i;
return re.test(email.trim());
}
/** Parola gücü: 0 (çok zayıf) - 4 (güçlü). */
function passwordStrength(pw) {
if (typeof pw !== 'string' || pw.length === 0) return 0;
let score = 0;
if (pw.length >= 8) score++;
if (/[a-z]/.test(pw) && /[A-Z]/.test(pw)) score++;
if (/\d/.test(pw)) score++;
if (/[^A-Za-z0-9]/.test(pw)) score++;
if (pw.length < 6) score = Math.min(score, 1);
return score;
}
/**
* T.C. Kimlik No doğrulaması:
* - 11 hane, ilk hane 0 olamaz
* - 10. hane = ((tekler toplamı * 7) - çiftler toplamı) mod 10
* - 11. hane = ilk 10 hanenin toplamı mod 10
*/
function isValidTCKN(value) {
const s = String(value);
if (!/^\d{11}$/.test(s) || s[0] === '0') return false;
const d = s.split('').map(Number);
const odd = d[0] + d[2] + d[4] + d[6] + d[8];
const even = d[1] + d[3] + d[5] + d[7];
const d10 = (((odd * 7 - even) % 10) + 10) % 10;
if (d10 !== d[9]) return false;
const sum10 = d.slice(0, 10).reduce((a, b) => a + b, 0);
return sum10 % 10 === d[10];
}
/** Türk cep telefonu: 05xx xxx xx xx, +90 5xx..., 5xx... biçimlerini normalize eder. */
function normalizePhone(input) {
const digits = String(input).replace(/\D/g, '');
let local;
if (digits.length === 12 && digits.startsWith('90')) local = digits.slice(2);
else if (digits.length === 11 && digits.startsWith('0')) local = digits.slice(1);
else if (digits.length === 10) local = digits;
else return null;
if (local[0] !== '5') return null;
return `+90 ${local.slice(0, 3)} ${local.slice(3, 6)} ${local.slice(6, 8)} ${local.slice(8)}`;
}
module.exports = { isValidEmail, passwordStrength, isValidTCKN, normalizePhone };