用于检查A-Z a-z 0-9 _和的PHP Regex

时间:2011-10-06 10:58:55

标签: php regex

我需要的不是电子邮件验证.. 这很简单。 允许@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?

4 个答案:

答案 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]+)