Библиотека Java/JS для обнаружения (не проверки) электронных писем и/или телефонных номеров в тексте

Есть ли какая-нибудь библиотека Java или Javascript, которая занимается обнаружением номеров электронной почты/телефонов в тексте? Я не говорю об их проверке, просто хочу найти что-то, что потенциально может выглядеть как адрес электронной почты или номер телефона.

Мы пытаемся запретить пользователям отправлять такую ​​информацию через нашу платформу.

Ответы (1)

Просто используйте регулярные выражения.

Для адреса электронной почты просто используйте регулярное выражение, по крайней мере, для одной буквы или цифры, за которой следует @, затем, по крайней мере, одна буква или цифра, точка и, по крайней мере, еще одна буква, поэтому: a@b.cвозможно, это адрес электронной почты, а может и т somereallylongname@company.com. д. возможный повтор был бы\w+@\w\.\w

Телефонные номера будут, в зависимости от того, ищете ли вы только междугородние номера, что-то вроде, \d{2}[ -]*\d{3}[ -]*\d{3,}но вам может быть лучше найти потенциальные номера телефонов с помощью регулярного выражения, а затем использовать библиотеку java/JS google libphonenumber , которая является гораздо более сложной библиотекой для проверки и проверка номеров телефонов и позволяет вам проверить, является ли что-то возможным номером телефона и является ли он действительным номером телефона.

Поскольку TLD имеют как минимум 2 символа, а также домены 2-го уровня, как правило, можно улучшить соответствующее регулярное выражение [w\.]+@(\w{2,}\.)+\w{2,}(чтобы также учитывать многоуровневые домены, такие как abc.xyz.com). С телефонными номерами дело обстоит немного сложнее: от использования форматирования вроде +1-123-55555-321via +1 (0123) 55555 321до просто 012355555321, все может быть телефонным номером. Поскольку невозможно отфильтровать все [0-9\+\-]*, для этого потребуется более сложный фильтр, который может уже охватывать какая-то библиотека (поэтому лучше использовать ее, чем заново изобретать колесо).