Lua模式匹配用于匹配电子邮件地址。

我有以下代码:

if not (email:match("[A-Za-z0-9%.]+@[%a%d]+%.[%a%d]+")) then
     print(false)
end

目前它不能识别

 "test@yahoo,ca"  或者 "test@test1.test2,com"

作为错误。

我认为通过将输入限制为%a-字符和%d-数字,我默认会捕捉到任何标点符号,包括逗号。

但我猜我错了。或者我只是看不到其他东西。 欢迎第二个视角。

点赞
用户1009479
用户1009479

在例子“test@test1.test2,com”中,模式匹配了test@test1.test2并且在接下来的,处停止。它并没有误报,确实有一次匹配,只是不符合你的预期。为了修复这个问题,可以使用锚点:

^[A-Za-z0-9%.]+@[%a%d]+%.[%a%d]+$

你还可以进一步简化它:

^[%w.]+@%w+%.%w+$

在这个模式中,%w匹配包含字母和数字字符的字符串。

2015-05-07 01:19:44
用户1170664
用户1170664

我很难在 Lua 中找到一个真正的电子邮件验证函数。

我找不到任何一个允许电子邮件中一些特殊情况的函数。类似于 + 或引号在电子邮件中是可以接受的。

于是我编写了自己的 Lua 函数,它能够通过电子邮件地址规范中概述的所有测试。

http://ohdoylerules.com/snippets/validate-email-with-lua

我还添加了一堆注释,因此如果您想忽略某些奇怪的验证,请删除该特定检查的 if 语句。

2015-09-20 05:21:36