Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

257
Vistas
Regex para correo electrónico que muestra la primera y la última letra del usuario y el dominio

Soy nuevo en expresiones regulares y estoy tratando de sustituir algunos caracteres por asterisco en php como se muestra a continuación:

correo electrónico: victor@gmail.com -> v****r@g***l.com

He hecho esto:

 $email = preg_replace('/(?:^|@).\K|\.[^@]*$(*SKIP)(*F)|.(?=.*?\.)/', '*', $linha['cli_email']);

El problema es que la salida es v*****@g****.com en lugar de v****r@g***l.com y no sé cómo mostrar el último para el nombre de usuario y último para el proveedor de correo electrónico.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puedes probar esto:

 $email = preg_replace('/(?:^|.@).\K|.\.[^@]*$(*SKIP)(*F)|.(?=.*?\.)/', '*', $linha['cli_email']);

Espero haber ayudado..

over 4 years ago · Santiago Trujillo Denunciar

0

Aquí, en primer lugar, estamos haciendo coincidir la cadena usando expresiones regulares.

Regex: (?<=\b[az])[a-zA-Z0-9]+(?=.\@)|(?<=@.)[a-zA-Z0-9]+(?=.\.)

(?<=\b[az])[a-zA-Z0-9]+(?=.\@) dice que los caracteres de coincidencia son positivos mirando hacia adelante para one character y @ y positivos mirando hacia atrás para boundary condition y a character .

(?<=@.)[a-zA-Z0-9]+(?=.\.) dice que los caracteres de coincidencia son positivos mirando hacia adelante para one character y . y positivo mirando hacia atrás para la condición @ y un carácter .

Pruebe este fragmento de código aquí

 <?php ini_set('display_errors', 1); $email="victor@gmail.com"; preg_match_all('/(?<=\b[az])[az]+(?=.\@)|(?<=@.)[az]+(?=.\.)/',$email,$matches); foreach($matches[0] as $key => $value) { $email=str_replace($value, getStars(strlen($value)), $email); } echo $email; function getStars($length) { $string=""; for($x=0;$x<$length;$x++) { $string.="*"; } return $string; }
over 4 years ago · Santiago Trujillo Denunciar

0

Debe tener en cuenta todos los tipos de direcciones de correo electrónico. ¿Cómo manejará la respuesta aceptada las direcciones de correo electrónico como m@example.com o user@host.example.com o joe@m.com ?

 <?php function starmid($str) { switch (strlen($str)) { case 0: return false; case 1: return $str; case 2: return $str[0] . "*"; default: return $str[0] . str_repeat("*", strlen($str) - 2) . substr($str, -1); } } function hideemail($email) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return false; } list($u, $d) = explode("@", $email); $d = explode(".", $d); $tld = array_pop($d); $d = implode(".", $d); return starmid($u) . "@" . starmid($d) . ".$tld"; } $emails = [ "victor@gmail.com", "v@example.com", "victor@g.com", "victor@host.example.com", "victor+foo@gmail.com", "invalid@", ]; foreach ($emails as $email) { echo hideemail($email) . "\n"; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda