Php 验证电子邮件id中的Preg匹配问题
为什么下面的代码将电子邮件ID返回为false或invalidPhp 验证电子邮件id中的Preg匹配问题,php,regex,preg-match-all,Php,Regex,Preg Match All,为什么下面的代码将电子邮件ID返回为false或invalid <?php $okay = preg_match( '/^[A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z.]{2,4}$/', "caree.india.support@gmail.com" ); echo $okay; ?> PHP本身已经有一个验证电子邮件的函数,我建议使用它而不是正则表达式 <?ph
<?php
$okay = preg_match(
'/^[A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z.]{2,4}$/',
"caree.india.support@gmail.com"
);
echo $okay;
?>
PHP本身已经有一个验证电子邮件的函数,我建议使用它而不是正则表达式
<?php
$email_a = 'caree.india.support@gmail.com';
$email_b = 'Random words';
if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
echo "This ($email_a) email address is considered valid.";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
echo "This ($email_b) email address is considered valid.";
}
?>
更多信息可在此处找到:照汤姆写的做。不要重新发明已经存在并正在发挥作用的东西。但是为了回答你的正则表达式失败的原因:你不允许dots
\.
@mybrainhuts括号表达式不需要转义点:/^[A-z0-9\.]+[@][A-z0-9\-]+([.][A-z0-9\-]+[A-z.]{2,4}$/
(注意第一个括号末尾添加的点)@亚历克斯贝:你完全正确——我想我是想确保它不会与外卡混淆。应该用你的方式写的!TLD的2到4个字符非常糟糕,请看:MyBrainhuts,我没有发明,我复制了代码并尝试了,当它不起作用时,我在这里问。我是一个非常非常新的bie。。。