Pull to refresh

Поиск скрытых контактов регулярными выражениями

Reading time2 min
Views647
Существует множество материалов по регуляркам, множество готовых шаблонов, которые можно просто взять и использовать в валидаторах, поисках и т.д. Обычно это правильные регулярки, для валидации, например, введенного адреса электронной почты. Но мне недавно выпала задача по поиску «неправильных» данных (когда пользователи знают что нельзя писать свои контакты, но пишут извращенными способами), а конкретно email'ов и телефонов.

Задача стояла такая: "Не дать пользователям публиковать свои номера телефонов и адреса электронной почты на сайте".

Я, к сожалению, не смог нагуглить найти готового решения в интернете и поэтому хочу поделиться парой регулярных выражений, которые написал для этих целей.



Телефон:
^\s[-_\[\]0-9 ()]{10,20}^
Email:
^[-.\w]+(?:[-_( \[])*(?:@|at)(?:[-_) \]])*(?:[-\w])+(?:[-_ \[(]*)(?:[.]|dot)(?:[-_ \])]*)(?:[\w.]*)^

Данные регулярки покрыли все мои потребности по поиску скрытой контактной информации на нужном мне сайте.

Вот наглядный пример того, какого вида адреса мне встречались:
Email example

Уточню, что сайт не русский, поэтому выражения ориентированы на англоязычный контингент пользователей.

PS
для любителей PHP можно сделать хелперы примерно следующего вида:

if (!function_exists('getPhonePattern')) {
	function getPhonePattern()
	{
		return '^\s[-_\[\]0-9 ()]{10,20}^';
	}
}

if (!function_exists('getEmailPattern')) {
	function getEmailPattern()
	{
		return '^[-.\w]+(?:[-_( \[])*(?:@|at)(?:[-_) \]])*(?:[-\w])+(?:[-_ \[(]*)(?:[.]|dot)(?:[-_ \])]*)(?:[\w.]*)^';
	}
}

if (!function_exists('removeContacts')) {
	function removeContacts($data)
	{
		$data = preg_replace(getEmailPattern(), ' *** hidden email *** ', $data);
		$data = preg_replace(getPhonePattern(), ' *** hidden phone *** ', $data);
		return $data;
	}
}



Не забывайте, что вы можете сами дополнять эти регулярки.
Tags:
Hubs:
0
Comments23

Articles