VBA使用模式validation电子邮件列表

我有一个由分号和空格隔开的单元格中的电子邮件列表,但是我已经得到了只有用分号分隔时才validation电子邮件的模式。 我在哪里插入空间来适应我的模式?

电子邮件示例:aaa@bbb.com; ccc@eee.com; fff@ggg.com

单个单元中的电子邮件地址数量从1到20不等

validation以分号分隔的电子邮件的模式:

^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$ 

喜欢这个?
https://regex101.com/r/7IPvOB/1

^\s?(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$

你让自己的生活比需要的复杂得多。

 Dim addresses 'As Variant addresses = Split(addresses, ";") 

完成。 你有你的地址在一个数组(虽然有一个额外的空间,但你可以很容易地修剪)。 正则expression式将不可避免地排除有效的电子邮件,除非它符合电子邮件地址的RFC822标准,并且您不需要在您的代码中使用这样的正则expression式模式 。

RFC 822中描述的语法非常复杂。 使用正则expression式实现validation有点推动了对正则expression式合理的限制[…]