我是regex的新手,需要解析以逗号分隔的电子邮件地址扩展输入(@符号后的所有内容)。例如:
foo.bar,foo.bar.baz,FOO-bar.baz
我知道字符串中没有空格。也。以下是我想用于一个电子邮件扩展的正则表达式:
/[a-z\d\-.]+\.[a-z]+\z/i
如何修改Ruby中的正则表达式以使用逗号分隔的多个扩展名?
谢谢!
答案 0 :(得分:2)
\A(([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})[, ]?)*\Z
上述正则表达式适用于以逗号分隔的0个或更多个电子邮件地址。您可能希望在保存或使用它来删除尾随逗号之前选择(“,”)字符串。
答案 1 :(得分:0)
尝试
/(,{0,1}[a-zA-Z_]+[^.]*\.[a-zA-Z]{2,6})+/i
基于我的测试:
p 'True' if 'foo.bar,foo.bar.baz,foo-bar.baz' =~ /(,{0,1}[a-zA-Z_]+[^.]*\.[a-zA-Z]{2,6})/i
将给出
True
答案 2 :(得分:0)
您最好将列表拆分为组件,然后检查每个组件:
hosts = 'foo.bar,foo.bar.baz,foo-bar.baz'
all_ok = true
hosts.split(/\s*,\s*/).each do |host|
all_ok = false unless(host =~ /[a-z\d\-.]+\.[a-z]+\z/i)
end
这可能不是一个单行,但在未来六个月可能会更容易理解(当然,除非你的正则表达式更强)。