【问题标题】:Replace emails, phones and addresses in string (like AirBnB does it)?替换字符串中的电子邮件、电话和地址(就像 AirBnB 一样)?
【发布时间】:2015-06-20 07:00:45
【问题描述】:

我需要在我的 Rails 应用中实现与 AirBnB 在其 iOS 应用中相同的功能。当您在 AirBnB 上给某人写信时,您的电话、电子邮件和地址将被屏蔽,因此您会得到如下所示的内容:

输入:

电子邮件地址 likeemail@example.comemail AT example DOT com 应被替换。 347 323 4567tree 四七,三二三四五六七 等电话号码也应替换。

输出:

(电子邮件隐藏)(电子邮件隐藏) 等电子邮件地址应被替换。 (隐藏电话)(隐藏电话) 等电话号码也应替换。

这是为了确保人们无法进行“离线”交易。我到处看了看,但似乎我们那里没有任何宝石做过类似的事情。

这似乎是具有一千种极端情况的事情之一,所以我宁愿自己不实现它。有人知道那里有任何宝石吗?

【问题讨论】:

  • 出于好奇,如果你用单词写数字但每个单词省略一个字母,它还能检测到吗?
  • 这就是为什么我不想自己做这件事......有太多的边缘情况。
  • @HolgerEdwardWardlowSindbæk 对此有任何更新,还是您最终自己编写了正则表达式?

标签: ruby-on-rails ruby regex rubygems


【解决方案1】:

以下内容(取自 this question)会有一些误报(对电子邮件地址使用正则表达式总是会),但会捕获字符串中的大多数电子邮件

'email addresses like me@example.com'.gsub(
  /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/, '(email hidden)')

【讨论】:

  • 这样可以处理非“作弊”形式的电子邮件。如果有人在 gmail dot com 上写测试,但它不会抓住它。电话和地址也是如此。还有其他建议吗?
  • 我的意思是,/\b.+?\bat.+?\bdot.+?\b/ 可以解决这个问题
  • 感谢您的评论。我希望听到的是,是否还有其他人已经为电话、电子邮件和地址做过类似的事情。这似乎是具有一千个边缘情况的事情之一,所以我不想自己做。
  • @HolgerEdwardWardlowSindbæk /(\d{3}\s?\d{3}\s?\d{4}|one|two|three|four|five|six|seven|eight|nine)/ 应该适用于您的电话号码情况。此外,如果您的问题是有人可以为我做这件事或给我一个已经拥有的资源,那么您的问题就离题了。
  • @engineersmnky 为什么它会跑题?我不希望任何人为我这样做。我想知道是否有人遇到过这个问题,因为它的所有边缘情况都已经花时间制作了,所以我不必自己做。如果您知道任何图书馆,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 2013-02-04
  • 2020-11-06
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多