2011-10-06 64 views
-1

我需要的不是电子邮件验证.. 其简单。 允许@hello.world@hello_world@helloworld@helloworld.应被视为@helloworld从而@helloworld?PHP正则表达式用于检查A-Z a-z 0-9 _和

在为之后的字母或数字的短检查。并且_如果不是,则先取前面的字符串。

我现有的RegEx是/@.([A-Za-z0-9_]+)(?=\?|\,|\;|\s|\Z)/它只关心@helloworld而不是@ hello.world或@hello_world。

更新:

所以现在我有一个正则表达式与问题号1交易,即允许@hello.world@hello_world@helloworld但还是什么@helloworld.应被视为@helloworld从而@helloworld?

新正则表达式:/@([A-Za-z0-9+_.-]+)/

+3

谷歌“的电子邮件正则表达式”你会发现许多现有的解决方案 – KingCrunch

+1

'[A-。 Za-z0-9_]' - >'\ w'。 – alex

+1

http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses –

回答

6

不要为此使用正则表达式。

使用...

$valid = filter_var($str, FILTER_VALIDATE_EMAIL); 
+0

+1这是一个更好的方法 – SW4

0

你可以使用这个正则表达式验证电子邮件地址

^[A-Z0-9 ._%+ - ] + @ [A-Z0-9。 - ] + [AZ] {2,6-} $。

欲了解更多信息和完整的完整表达式,你可以检查here

我希望这可以帮助你

+0

'me @ localhost'怎么样? – alex

+0

请注意,filter_var在验证电子邮件时遇到了一些问题,有些用户报告说它验证没有TLD的电子邮件,我敢肯定这不是您想要的 –

+0

这会记下acctept“David Martensson”@ test.org这是一个有效的电子邮件地址,也是David/* djhfkjshfksdh */[email protected]是一个包含嵌入评论的有效电子邮件;) –

0

试试这个:

\@.+(\.|\?|;|[\r\n\s]+) 
+0

我需要的不是电子邮件验证.. 它很简单。 允许'@ hello.world'或'@hello_world'或'@helloworld'但'@helloworld'。应视为'@helloworld',如'@helloworld?' – Wh0RU

1

正则表达式将永远无法验证电子邮件,只做一些非常基本的格式检查。

用于匹配电子邮件地址的最全面的正则表达式的长度为8000个字符,而且由于电子邮件中接受的内容发生变化,该正则表达式已经失效。

使用一些设计的库来检查是否需要真正的验证,否则只需检查@和一些点,甚至更多,你可能会最终使完全合法的电子邮件地址无效。

完全合法的电子邮件地址的一些例子:(开头和结尾“是用于显示边界唯一的”

"[email protected]" 
"\"dama\"@nodomain.se" 
"da/[email protected]" 
"[email protected]õdomain.se" 
"[email protected]" 
"[email protected]??de??µa.d???µ?" 
"dama @nodomain .se" 
"[email protected] " 
+0

+1非常好的建议。 – alex

相关问题