电子邮件地址的 Lua 模式匹配

dot*_*dot 4 email lua lua-patterns

我有以下代码:

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

目前没有捕获

 "test@yahoo,ca"  or "test@test1.test2,com"
Run Code Online (Sandbox Code Playgroud)

作为错误。

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

但我想我错了。或者还有其他我没有看到的东西。第二双眼睛将不胜感激。

Yu *_*Hao 5

在 的示例中"test@test1.test2,com"test@test1.test2由于以下原因,模式匹配并停止,。这不是说谎,它确实匹配,只是不是您所期望的。要修复,请使用锚点:

^[A-Za-z0-9%.]+@[%a%d]+%.[%a%d]+$
Run Code Online (Sandbox Code Playgroud)

您可以进一步将其简化为:

^[%w.]+@%w+%.%w+$
Run Code Online (Sandbox Code Playgroud)

其中%w匹配一个字母数字字符。