我需要的不是电子邮件验证..
这很简单。
允许@hello.world
或@hello_world
或@helloworld
但@helloworld.
应视为@helloworld
,以@helloworld?
简要检查后的字母或数字。和_如果不是在它之前取字符串。
我现有的RegEx是/@.([A-Za-z0-9_]+)(?=\?|\,|\;|\s|\Z)/
它只关心@helloworld,而不关心@ hello.world或@hello_world。
更新
所以现在我得到了一个处理问题编号1的正则表达式。即允许@hello.world
或@hello_world
或@helloworld
但仍然应该将@helloworld.
作为{{{ 1}}以及@helloworld
新RegEx:
@helloworld?
答案 0 :(得分:6)
不要使用正则表达式。
使用...
$valid = filter_var($str, FILTER_VALIDATE_EMAIL);
答案 1 :(得分:1)
Regex永远无法验证电子邮件,只能进行一些非常基本的格式检查。
用于匹配电子邮件地址的最全面的正则表达式是8000个字符长,并且由于电子邮件中接受的内容发生更改,该字符集已经无效。
如果您需要获得真正的验证,请使用一些设计的库进行检查,否则只需检查@和某些点,等等,您可能最终会使完全合法的电子邮件地址无效。
完全合法的电子邮件地址的一些示例:(前导和尾随“仅用于显示边界”
"dama@nodomain.se"
"\"dama\"@nodomain.se"
"da/ma@nodomain.se"
"dama@nõdomain.se"
"da.ma@nodomain.se"
"dama@pa??de??µa.d???µ?"
"dama @nodomain .se"
"dama@nodomain.se "
答案 2 :(得分:0)
您可以使用此正则表达式验证电子邮件地址
^ [A-Z0-9 ._%+ - ]。。+ @ [A-Z0-9 .-] + [A-Z] {2,6-} $
有关更多信息和完整的表达,您可以查看here
我希望这有助于你
答案 3 :(得分:0)
试试这个:
\@.+(\.|\?|;|[\r\n\s]+)