Biblioteca Java/JS para detectar (no validar) correos electrónicos y/o números de teléfono en texto

¿Hay alguna biblioteca de Java o Javascript que se ocupe de la detección de números de teléfono/correo electrónico dentro del texto? No estoy hablando de validarlos, solo quiero encontrar algo que pueda parecerse a una dirección de correo electrónico de un número de teléfono.

Estamos tratando de evitar que los usuarios envíen este tipo de información a través de nuestra plataforma.

Respuestas (1)

Solo usa expresiones regulares.

Para una dirección de correo electrónico, simplemente use la expresión regular para al menos una letra o número seguido de @ seguido de al menos una letra o número, un punto y al menos una letra más, por lo que: a@b.cposiblemente podría ser una dirección de correo electrónico, somereallylongname@company.cometc. un posible re sería\w+@\w\.\w

Los números de teléfono serían, dependiendo de si solo está buscando números de larga distancia, algo así como, \d{2}[ -]*\d{3}[ -]*\d{3,}pero es mejor que localice números de teléfono potenciales con una expresión regular y luego use la biblioteca google libphonenumber java/JS, que es una biblioteca mucho más sofisticada para verificar y validar números de teléfono y le permite verificar si algo es un número de teléfono posible y si es un número de teléfono válido.

Como los TLD tienen al menos 2 caracteres, y los dominios de segundo nivel generalmente también, se podría mejorar la expresión regular relacionada [w\.]+@(\w{2,}\.)+\w{2,}(para tener en cuenta también los dominios multinivel como abc.xyz.com). Los números de teléfono son un poco más complicados: desde usar formato como +1-123-55555-321vía +1 (0123) 55555 321hasta solo 012355555321, todo podría ser un número de teléfono. Como uno no puede filtrar todo [0-9\+\-]*, esto requeriría un filtro más sofisticado, que alguna biblioteca podría ya cubrir (así que es mejor usarlo que reinventar la rueda).