2014-01-26 27 views
3

我正在研究一個最終允許用戶互相連接的應用程序,但首先用戶將能夠發佈一些公共信息,並且我想阻止他們發佈聯繫信息(主要是電子郵件和電話號碼)。如何防止用戶在文本輸入中輸入聯繫信息(電子郵件/電話號碼)?

有沒有可以檢測這些信息的iOS或PHP的算法或方法? (注 - 這不是一個簡單的正則表達式,我想阻止用戶向公衆顯示其聯繫信息的常見「棘手」方式)。

  • 給我打電話123-123-1234
  • 叫我在一,二,三onetwothree一二三四
  • 電子郵件我JohnSmith對:什麼,我想阻止

    例子@ gmail.com

  • 我留言約翰·史密斯在g郵件點com

顯然,有ü上述示例和其他示例的有限推導,所以我不能只爲它們創建一個「快速」表達式匹配算法。

我知道這可能不是100%完美的方法,但很好奇,如果有什麼東西比自己從頭開始更好。

+2

因此,當您阻止顯示聯繫人信息的「常見」形式後,用戶將會發現「不常見」的形式......要解決這個問題,您需要AI或HI(H = human,在它發佈之前)。 – CBroe

+1

總之,你不能。 –

+0

你可以關閉,不聽上述評論,你只需要願意制定所有的規則。我在下面發佈了其中的一些。 – 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]") 

然後像電子郵件,你將不得不使用。載

只有這樣,才能確保你覆蓋每一個號碼在那裏 - 你將需要添加信函方式每個區號在一系列類似:

"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

我只是說。如果他開始這樣做,他就可以做到,他必須制定一大堆規則,而這些信息需要一段時間才能發佈 - 但要說這是不可能的,這是不準確的。 – Nefariis

相關問題