我正在使用带有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})$";
如何解决这个问题?
我正在使用带有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})$";
如何解决这个问题?
只需使用:
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";
也许使用
filter_var($email, FILTER_VALIDATE_EMAIL);
将是一种更简单的方法。
使用此代码
<?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";
?>
由于 FILTER_VALIDATE_EMAIL 引起的问题(例如它不适用于非拉丁字符),我更喜欢使用:
preg_match("/^[^@]+@[^@]+\.[a-z]{2,6}$/i",$email_address);
只有当邮局主管希望允许对电子邮件地址进行 RFC 样式匹配时,在 PHP 中使用函数 filter_var() 才会更容易。对于某些应用程序或 MTA(sendmail 等),这可能是不可取的。但是,如果要走 preg_match() 路线,我建议调查非贪婪量词并捕获不使用缓冲区的语句。一个好的起点是http://us3.php.net/manual/en/book.pcre.php。
这是一个使用正则表达式的简单电子邮件验证方法:
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);
}
var emailid = $.trim($('#emailid').val());
if( ! /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailid)){
alert("<?php echo "email_invalid" ?>");
return false;
}