我有一串电子邮件,如下面的
“测试@ test.comtest.test1 @ test.comtest @ yahoo.co.intest1.test2 @ support.yahoo.com”
我想将其转换为有效电子邮件地址数组。我一直试图通过使用正则表达式来解决这个问题。
答案 0 :(得分:2)
总结每个人的评论,
您确实需要更好地划分数据。例如,你可以这样做:
test@test.com; test.test1@test.com; test@yahoo.co.in; test1.test2@support.yahoo.com
执行此操作可让您在;
上拆分答案,以获取可能的电子邮件地址列表。但是,看看这个SO已接受的关于the problem with validating email addresses using regex的回答。电子邮件地址有很多格式和可能性,只有正则表达式很难验证它们。
以下是使用上述字符串的example of delimiting。
答案 1 :(得分:0)
如果您能保证:
,可能能够这样做如果你能做出一些保证,那么你可以在Ruby中做这样的事情:
emails = "test@test.comtest.test1@test.comtest@yahoo.co.intest1.test2@support.yahoo.com"
# Test for a known string ending in a known domain.
emails.scan /(test.*?[.](?:com|in))/
# Test for known domains with positive lookbehind.
emails.scan /(?<=^|com|in).*?(?:com|in)/
换句话说,如果是夹具数据,请修复您的灯具以获得合理的分隔符。这将花费更少的时间,并且不易出错。
另一方面,如果它是真实数据,那么你不太可能将它们分开。将任意域名与任意尾随邮箱名称区分是不切实际的。