php - 如何防止用户在文本输入中输入联系信息(电子邮件/电话号码)?

标签 php ios regex validation email

我正在开发一款最终将允许用户相互联系的应用程序,但首先用户将能够发布一些公共(public)信息,我想阻止他们发布联系信息(主要是电子邮件和电话号码)。

是否有适用于 iOS 或 PHP 的算法或方法可以检测此类信息? (注意 - 这不是一个简单的正则表达式。我想防止用户以常见的“棘手”方式向公众显示他们的联系信息)。

我要阻止的示例:

  • 给我打电话 123-123-1234
  • 一二三一二三一二三四给我打电话
  • 给我发电子邮件 johnsmith@gmail.com
  • 通过 g mail dot com 给我 john smith 发消息

显然,上面的例子和其他例子有无限的推导,所以我不能只为它们创建一个“快速”的表达式匹配算法。

我知道可能没有 100% 完美的方法,但很好奇是否有比我自己从头开始制作更好的方法。

最佳答案

对于电子邮件,我总是使用这个正则表达式

 ("([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

没有那么多,你只需要愿意花时间去做。

关于php - 如何防止用户在文本输入中输入联系信息(电子邮件/电话号码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21369661/

相关文章:

Python 正则表达式或 |贪心

javascript - 通过正则表达式拆分字符串

php - 令人费解的 .htaccess/PHP 难题

php - processmaker 从哪个表获取密码?

javascript - 在javascript中将php与数据库一起使用

ios - 包含在 UIPopoverController 中时的 UINavigationBar 外观代理

javascript - ng-repeat 随机显示数据

ios - 同时使用 swift 和 obj c

ios - 从另一个 View Controller 通知 View Controller

JavaScript 正则表达式(页面范围验证)