我认为以前没有问过这个问题......我当然找不到有这个要求的东西。
背景
有一个返回人员 ID 的 API。一般来说,ID 应该被视为区分大小写......但如果 ID 实际上是他们的电子邮件地址......并且您正在与此 API 的不太出色的实现交谈,该 API 返回其电子邮件地址的混合大小写版本,有很多乐趣……
所以你正在谈论一种实现......它会给你返回URL之类的东西作为ID,例如
http://foo.bar.com/blahblahblah
您接下来可能会与另一个实现交谈......这会给您一些不明显的 ID,例如
as€jlhdésdj678hjghas7t7qhjdhg£
您可能正在与一个不错的实现交谈,它会为您返回一个不错的小写电子邮件地址:
bob.mcspam@acme.org
或者您可能正在与返回完全相同 ID 的不太出色的实现交谈
bob.mcspam@ACME.org
RFC 2821 声明只有邮箱区分大小写,但利用区分大小写会导致大量互操作问题......
我想要做的是识别作为电子邮件的字符串并强制域为小写。识别类似字符串的 URI 更容易,因为方案是http
or https
,我只需要将域名小写,这样更容易解析。
问题
如果给定一个由外部服务提供的字符串,我是否可以使用一个测试来确定该字符串是否为电子邮件地址,以便我可以强制域名为小写?
遗漏一小部分电子邮件地址并且不将域名小写是可以接受的。(允许假阴性)
如果字符串的一部分不是电子邮件地址的域部分,则将其强制为小写是不可接受的。(不允许误报)
更新
请注意,这个问题与this和this略有不同,因为在这两个问题的上下文中,您已经知道该字符串应该是一个电子邮件地址。
在这个问题的上下文中,我们不知道字符串是电子邮件地址还是其他东西......这使得这个问题不同