Email 电子邮件地址的Lua模式匹配
我有以下代码:Email 电子邮件地址的Lua模式匹配,email,lua,lua-patterns,Email,Lua,Lua Patterns,我有以下代码: if not (email:match("[A-Za-z0-9%.]+@[%a%d]+%.[%a%d]+")) then print(false) end 它目前不流行 "test@yahoo,ca" or "test@test1.test2,com" 作为一个错误 我想,通过将输入限制为%a-字符和%d-数字,默认情况下,我可以捕获任何标点符号,包括逗号 但我想我错了。或者还有其他我没看到的东西。 请再给我一双眼睛 在的示例中test@test1.test2,
if not (email:match("[A-Za-z0-9%.]+@[%a%d]+%.[%a%d]+")) then
print(false)
end
它目前不流行
"test@yahoo,ca" or "test@test1.test2,com"
作为一个错误
我想,通过将输入限制为%a
-字符和%d
-数字,默认情况下,我可以捕获任何标点符号,包括逗号
但我想我错了。或者还有其他我没看到的东西。
请再给我一双眼睛 在的示例中test@test1.test2,com“
,模式匹配test@test1.test2
并由于以下原因而停止,
。这不是撒谎,这是匹配的,只是不是你所期望的。要固定,请使用锚定:
^[A-Za-z0-9%.]+@[%a%d]+%.[%a%d]+$
您可以将其进一步简化为:
^[%w.]+@%w+%.%w+$
其中
%w
匹配字母数字字符。我很难找到Lua的真正电子邮件验证功能
我找不到任何允许电子邮件允许的特殊情况。像+
或引号之类的东西在电子邮件中实际上是可以接受的
我编写了自己的Lua函数,可以通过电子邮件地址规范中列出的所有测试
我还添加了一堆注释,因此如果您想忽略某些奇怪的验证,只需删除该特定检查的if语句即可 请查看此帖子:。它解决了你的问题吗?那个“电子邮件地址”对我来说不符合这个模式。也就是说,如果您希望实际允许所有有效的电子邮件地址,并且此模式将无法匹配任何数量的有效地址,那么电子邮件验证并不简单。请阅读
lhf
对该问题的评论,看看这到底有多难做到正确。然后放弃那么锚和美元呢?您的正则表达式在使用TLD(如.co.uk