200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 正则表达式匹配邮箱 php php正则表达式匹配邮箱的问题解析

正则表达式匹配邮箱 php php正则表达式匹配邮箱的问题解析

时间:2023-09-22 02:24:33

相关推荐

正则表达式匹配邮箱 php php正则表达式匹配邮箱的问题解析

php正则表达式匹配邮箱,代码如下:

$a='/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/';

$b='1412424545645454545454545k@';

if(preg_match($a,$b)){

echo "电子邮件合法";

}else{

echo "电子邮件不合法啊";

} //by

?>

为何上面的输出为合法呢?

{2,10}这里不是只能放2到10位数字吗,但上面的邮箱却超出10位了。

这个正则是能匹配的,匹配到这样这部分 '545454545k@'

前面部分的1412424545645454不匹配,所以还是合法的。

正确匹配,可以修改为这样:

$a='/^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$/';

注意正则:/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/它没有断言,意味着只要字符串中有符合的部分就匹配,因此{2,10}是只能2到10位匹配,但不针对整个字符串只要有一部分符合就匹配了。

要判断一整段字符串是否都匹配就要用断言。如^ $

/^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$/注意头和尾加上了^ $

完善好的代码,如下:

$a='/^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$/';

$b='1412424545645454545454545k@';

if(preg_match($a,$b)){

echo "电子邮件合法";

}else{

echo "电子邮件非法";

} //by

?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。