我们正在开发一个带有自助服务的多租户应用程序。用户使用他们的电子邮件id注册。每个注册都会根据他们的电子邮件id分配给一个租户。租户是根据电子邮件id的网络地址部分使用这个简单的正则表达式动态创建的。
/.*@(.*)/
例如,使用user1@amazon.com电子邮件的用户注册,创建名为amazon.com
的租户,并且分配给它。当user2@amazon.com注册时,他/她将被添加到同一个租户中。租户用户可以看到彼此并共享文件/内容。
现在亚马逊可能有@amazon.co。给印度办公室的员工发邮件。他们可能有美国前缀,例如,美国员工的@us.amazon.com等,
是否可行/可能,通过编程从多个电子邮件格式中识别单个公司?如果是,你将如何着手去做?Regex示例等,
是否有商业/免费服务/图书馆?
在当前的实现中,我们为amazon.co.in和us.amazon.com分别创建了一个单独的租户,并且manually
在请求时合并用户/数据
我不知道有任何现有的库可以做你需要的,而且据我所知,不可能完全使用正则表达式解决这个问题,但是你可以缩小一点范围。
电子邮件规范指出,格式为user1@example的电子邮件是一种有效格式,但在实践中,这种格式在公开场合相当罕见。如果您不介意在这些情况下导致错误(或者创建一个需要手动合并的新租户),那么您可以将匹配限制为所有内容,直到tld:
/^.*@(.*).[^.]+$/
这将包括以下情况:
- user1@example.com
- user2@example.org
我不确定在"co.uk"one_answers"co.in"中有多少标签类型为"co",但如果它是一个特定的集合,您可以选择使用以下正则表达式排除这些(假设"co"one_answers"ab"被排除在外):
/^.*@(.+?).(co.|ab.)?[^.]+$/
第一个捕获组将从以下内容中提取"example":
- user1@example.com
- user2@example.org
- user3@example.co.uk
- user4@example.ab.in
- user4@for.example.com
但是你很快就会遇到这样的麻烦:
- user4@for.example.com
- user6@for.example.co.uk
- user6@forexample.com
- user5@for.instance.com
如果你考虑到一个标签可能在几个地方匹配,它也会变得相当复杂:
- user6@ab.example.com
- user7@instance.ab.cd