我正在使用带preg_match
功能的php验证电子邮件地址。但我不断收到以下错误
preg_match(): No ending delimiter '^' found
这是我的preg_match模式
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
如何解决这个问题?
答案 0 :(得分:15)
只需使用:
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";
答案 1 :(得分:9)
也许正在使用
filter_var($email, FILTER_VALIDATE_EMAIL);
这将是一种更简单的方法。
答案 2 :(得分:4)
使用此代码
<?php
$email = "asd/sdff@asdf.com";
$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
$email = (preg_match($regex, $email))?$email:"invalid email";
?>
答案 3 :(得分:0)
如果邮件管理员希望允许RFC样式匹配电子邮件地址,则在PHP中使用函数filter_var()会更容易。对于某些应用程序或MTA(sendmail等),这可能并不可取。但是,如果要使用preg_match()路由,我建议调查非贪心量词并捕获不使用缓冲区的语句。一个好的起点是http://us3.php.net/manual/en/book.pcre.php。
答案 4 :(得分:0)
由于FILTER_VALIDATE_EMAIL导致的问题(例如,它对非拉丁字符不起作用),我更喜欢使用:
preg_match("/^[^@]+@[^@]+\.[a-z]{2,6}$/i",$email_address);
答案 5 :(得分:0)
这是一个简单的电子邮件验证方法,带有正则表达式:
public function emailValidation($email)
{
$regex = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$/";
$email = strtolower($email);
return preg_match ($regex, $email);
}
答案 6 :(得分:-2)
var emailid = $.trim($('#emailid').val());
if( ! /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailid)){
alert("<?php echo "email_invalid" ?>");
return false;
}