【问题标题】:JS - Block user from typing phone number [closed]JS - 阻止用户输入电话号码 [关闭]
【发布时间】:2019-06-05 11:10:13
【问题描述】:

我有一个像 AirBnB 这样的预订网站,我的用户可以在我的网站上相互交换信息。

我想阻止我的用户在这些消息中交换电话号码和电子邮件地址。

我使用的方法是一起查找 4 个数字或 @ 并在发送消息之前将其删除。

请问有没有更好的办法?

谢谢。

【问题讨论】:

  • 用户将始终能够轻松绕过这一点。如果您以555-1234 的形式阻止号码,用户将键入5 5 5 - 1 2 3 4"five five five, one two three four"。 “更好的方法”可能是阻止用户直接交流。
  • 我知道,但如果我能尽可能多地抓住它们就好了。
  • 所以获取一个正则表达式并在服务器上提交时将其过滤掉,但人们会通过 foo[at]example[dot]com 和其他数百万种方式绕过它。它应该在服务器端而不是在客户端完成。
  • stackoverflow.com/questions/3303184/…stackoverflow.com/questions/10141295/…(通过两次搜索发现的内容令人惊叹)
  • Epascarello,在发布此之前我做了很多研究,就像我一直做的那样。但不幸的是,我无法找到解决方案。感谢您的链接。

标签: javascript php


【解决方案1】:

使用正则表达式。

var phoneRegex = /[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}/im;
var emailRegex = /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;

if(phoneRegex.test(content) || emailRegex.test(content)) 
    blockUser(); // do whatever is necessary to block the user

【讨论】:

  • 谢谢,我会用的。
  • 这不是真正可以通过正则表达式解决的。例如,一个(比如说)英国号码将轻松通过该电话正则表达式,因为它将以 +44(英国国家代码)开头。即使人们被禁止使用您在此处给出的模式,他们也会通过添加空格点甚至正则表达式不匹配的字母来以不同的方式将其分解。因此,您要么最终得到一个无用和/或让用户感到沮丧的正则表达式,要么进行军备竞赛以尝试将所有内容列入黑名单。这对您和用户都是一种损失。
  • @vlaz 在任何情况下都很难反驳,但这是一个很好的开始方式。无论您采取多少预防措施,人们总能找到解决方法,仅此而已。
  • 我同意,真正想转转的人会去做。但至少,他们中的一些人会接受他们不应该这样做。最好阻止其中一些,而不是一个人。
  • 我不同意——这不是一个好的开始,因为没有好的结果。用户感到沮丧,您的努力要么徒劳无功,要么变得越来越难以修改和维护。在这种情况下,每个人都会输。
【解决方案2】:

啊,电话号码检测。

简短回答:Fairly easily

更长的答案:

电话号码检测的问题在于,有很多方法可以表达电话号码。

  • 我无法输入 1 (800) 111 2222?那么 1-800-111-2222 和其他变体呢?
  • 你在抓数字吗? one eight hundred one hundred and eleven twenty two twenty two1 呢
  • 两者呢? one 800 1one1 two222
  • 外国号码呢? + 64 3 477 4000
  • 图像呢?图片链接?

长话短说,语言很难,用户很聪明。查看这些以了解此类数据的输入/输出的复杂性:https://imgur.com/gallery/r102w

祝你好运。

【讨论】:

  • 谢谢伙计,我之前搜索过,但找不到这个“相当容易”的解决方案。这解决了我的问题,只要 Stack 允许,我就会接受你的回答。
猜你喜欢
  • 2021-08-15
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
相关资源
最近更新 更多