2014-01-26 3 views
3

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

Есть ли алгоритм или подход для iOS или PHP, которые могут обнаружить такую ​​информацию? (Примечание. Это не простое регулярное выражение. Я хочу, чтобы обычные «хитрые» способы отображения пользователями своих контактных данных публично).

Примеры того, что я хочу, чтобы блокировать

  • Позвоните мне на 123-123-1234
  • Позвоните мне на один-два-три onetwothree один два три четыре
  • Напишите мне JohnSmith @ gmail.com
  • сообщение мне джон смит в г ком

почта точка Очевидно, что есть U n неограниченные выводы из приведенных выше примеров и другие, поэтому я не могу просто создать «быстрый» алгоритм сопоставления выражений для всех них.

Я знаю, что, вероятно, для этого не существует идеального подхода на 100%, но было любопытно, было ли что-то там, что было бы лучше, чем сделать мой собственный с нуля.

+2

Итак, после того, как вы заблокировали «общие» формы отображения контактной информации, пользователи пойдут на поиск «необычных» ... Чтобы решить эту проблему, вам понадобится AI или HI (H = человек, что означает активный просмотр размещенного контента до его публикации). – CBroe

+1

Одним словом, вы не можете. –

+0

Вы можете приблизиться, не слушайте приведенные выше комментарии, вы просто должны быть готовы сделать все правила.Ill опубликуйте несколько из них ниже. – Nefariis

ответ

2

Для электронной почты я всегда использую это регулярное выражение

("([a-zA-Z0-9._%+-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)") 

для других писем, вместо использования регулярных выражений использовать строкового поиск

if line.tolower.contains("dot") and line.tolower.contains("com") 
or if line.tolower.contains("@") and "com" 
or if line.tolower.contains("@") and "net" 
or if line.tolower.contains("mail") and "com" 
or if line.tolower.contains("gmail") or "Yahoo" or "hotmail" or "bing" 

Как вы можете видеть, вы будете иметь, чтобы сделать довольно несколько правил

Для телефонных номеров

("(?:\b\d{10,11}\b)") 
("[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]") 

Тогда как сообщения электронной почты, вы должны будете использовать .Contains

Единственный способ убедиться, что вы покрываете каждый номер там - вам нужно будет добавить каждый код города в форме письма в серии, как:

"twosixfive" 
"fourninesix" 

, а также:

"two six five" 
"four nine six" 

, а также:

"two-six-five" 
"four-nine-six" 

Здесь находится список всех региональных табличных значений: http://en.wikipedia.org/wiki/List_of_NANP_area_codes

Существует не так уж много, вы должны быть готовы потратить время, чтобы сделать это.

+0

Im просто говорю. Если он приступит к этому, он сможет это сделать, ему нужно будет сделать множество правил, и для сообщений нужно будет потратить некоторое время, но сказать, что это невозможно, неточно. – Nefariis

Смежные вопросы