0

我需要使用 javascript 表单验证例程来扫描各种输入文本字段以查找嵌入式电话号码和电子邮件地址。这是针对可以免费发布但与买家“付费联系”的分类广告系统,因此目的是(尽可能)防止用户(发布广告的人)简单地嵌入他们的手机和/或电子邮件联系信息以绕过系统。

我已经在谷歌上搜索了一段时间,RegEx 不是我的强项,所以我很难找到一个好的代码片段来提供帮助。我想要做的就是获得一个文本字段的通过/失败(如果它似乎没有嵌入电子邮件和/或电话号码,则通过,如果有则失败)

有没有人已经有一个好的 javascript 解决方案?

4

5 回答 5

2

尝试这个:

var text = textArea.value;
if (text.search(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/))
 ...;//Contains email
if (text.search(/^[+]?(?!0{5})(\d{5})(?!-?0{4})(-?\d{4})?$/))
 ...;//Contains phone
于 2009-09-07T13:37:26.363 回答
1

感谢大家的投入。这是我最终得到的版本,希望对其他人有所帮助。注意:我删除了该帖子的实际“坏”词,以便它通过本网站的过滤器。您可以将 'badword1'、'badword2' 等替换为实际的 'bad' 单词(你知道,例如 nukular、calender、ekcetera):

function isAllowed(varField) {

      var msg = '';
      var pass = true;

      var regex0=/\b(@|www|WWW|http|hotmail|gmail|badword1|badword2|badword3)\b/i;
      if (regex0.test(varField))
         {
         msg += "Text appears to have disallowed words (e.g. profanity, email, web address, @ symbol, etc.)\n";
         pass = false;
         }

      var regex1=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
      if (regex1.test(varField))
        {
        msg += "Text appears to have email address in it (not allowed\n";
        pass = false;
        }


      var regex2=/\b\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}\b/i;
      if (regex2.test(varField))
        {
        msg += "Text appears to have a phone number in it (not allowed)\n";
        pass = false;
        }

      if (msg!='')
        {
        alert(msg);
        }
     return pass;

}
于 2009-09-08T00:00:25.950 回答
0

这将找到电子邮件地址:\b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[AZ]{2,4}\b

这将找到电话号码: \b(()?\d{2,3}(?(1)))(?:-?\d{3}-?\d{4}|\d{11} )\b

于 2009-09-07T13:35:51.373 回答
0

您将能够获得一些,但不要期望获得最多(特别是如果人们知道要求,或者有不止一次机会填写表格)。

人们已经非常擅长通过执行诸如“hotmail dot com 上的 myaddresses”之类的操作来规避对电子邮件地址的 bot 检测,并且有上百万种变体。此外,电话号码因地区而异。

于 2009-09-07T13:38:47.220 回答
0

你没有说你正在使用什么服务器端技术,但最好在服务器上进行这种类型的处理。在我自己的工作(ASP.NET)中,我总是偏爱服务器端,因为面向对象的服务器端框架的灵活性和强大功能几乎每次都会胜过 JavaScript。这种情况也不例外,因为JavaScript 正则表达式支持似乎缺少几个关键特性。

无论您选择使用服务器端还是客户端,我发现在使用Espresso等工具时,编写 RegEx 代码会大大简化。如果您在 Mac 上运行,请考虑使用 Reggy。这些工具通常带有几个用于各种常见查询(即电话号码、电子邮件等)的“常用”RegEx 表达式,这些查询通常只需很少的修改即可工作。

于 2009-09-07T13:48:40.530 回答