1
<?php
// Regla: 3 a 16 caracteres, solo letras, números y guion bajo (\w)
// Iniciando con letra obligatoria [a-zA-Z]
$patronUsername = '/^[a-zA-Z]\w{2,15}$/';
$pruebas = [
'carlos_dev', // Válido (10 caracteres, letras y guion bajo)
'valeria2026', // Válido (11 caracteres)
'a_b', // Válido (3 caracteres exactos)
'99problemas', // Inválido (no inicia con letra)
'juan perez', // Inválido (contiene espacio)
'super_califragilistico_espialidoso', // Inválido (supera 16 caracteres)
'dev@kilopolis', // Inválido (contiene arroba)
];
echo "<div style='font-family:system-ui; max-width:620px; padding:15px;'>";
echo "<h3 style='color:#0f172a; margin-top:0;'>👤 Validador de Usernames con \\w</h3>";
echo "<p style='color:#64748b; font-size:13px;'>Patrón: <code>^[a-zA-Z]\\w{2,15}$</code> (inicia con letra + caracteres de palabra)</p>";
foreach ($pruebas as $username) {
$esValido = preg_match($patronUsername, $username) === 1;
$colorFondo = $esValido ? '#ecfdf5' : '#fef2f2';
$colorBorde = $esValido ? '#10b981' : '#ef4444';
$icono = $esValido ? '✅' : '❌';
$mensaje = $esValido ? 'NOMBRE VÁLIDO' : 'RECHAZADO POR POLÍTICA';
echo "<div style='display:flex; justify-content:space-between; align-items:center; background:$colorFondo; border:1px solid $colorBorde; border-radius:6px; padding:10px 14px; margin-bottom:8px;'>";
echo " <div>";
echo " <strong style='font-family:monospace; font-size:15px; color:#1e293b;'>$username</strong>";
echo " <span style='color:#64748b; font-size:12px; margin-left:8px;'>(" . strlen($username) . " chars)</span>";
echo " </div>";
echo " <span style='color:$colorBorde; font-weight:bold; font-size:12px;'>$icono $mensaje</span>";
echo "</div>";
}
echo "</div>";
Haz clic para editar este código