简单的email-regexp不允许在@之前和之后使用连字符

mat*_*att 2 regex email validation

我发现这个简单的正则表达式(我知道它可能不完美)在线某处验证电子邮件地址.

/^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/
Run Code Online (Sandbox Code Playgroud)

问题是,这个正则表达式不允许以下情况:

myname@test-domain.com
my-name@test-domain.com
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

PS.我在javascript中使用这个正则表达式.

spe*_*akr 5

如果您只想添加连字符,可以将正则表达式更改为:

/^(?:\w+[\-\.])*\w+@(?:\w+[\-\.])*\w+\.\w+$/
Run Code Online (Sandbox Code Playgroud)

要添加其他特殊字符,例如下划线,只需将它们放在第一个(而不是第二个)方括号中,即更改[\-\.][\-\._].

还要看看这个问题及其答案.