php正则表达式匹配邮箱的问题解析
php正则表达式匹配邮箱,代码如下:
<?php $a='/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/'; $b='1412424545645454545454545k@qq.com'; if(preg_match($a,$b)){ echo "电子邮件合法"; }else{ echo "电子邮件不合法啊"; } //by www.jbxue.com ?>
为何上面的输出为合法呢?
{2,10}这里不是只能放2到10位数字吗,但上面的邮箱却超出10位了。
这个正则是能匹配的,匹配到这样这部分 '545454545k@qq.com'
前面部分的1412424545645454不匹配,所以还是合法的。
正确匹配,可以修改为这样:
注意正则:/([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})/
它没有断言,意味着只要字符串中有符合的部分就匹配,因此{2,10}是只能2到10位匹配,但不针对整个字符串只要有一部分符合就匹配了。
要判断一整段字符串是否都匹配就要用断言。如^ $
/^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$/
注意头和尾加上了^ $
完善好的代码,如下:
<?php $a='/^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$/'; $b='1412424545645454545454545k@qq.com'; if(preg_match($a,$b)){ echo "电子邮件合法"; }else{ echo "电子邮件非法"; } //by www.jbxue.com ?>
您可能感兴趣的文章:
php邮箱检测的正则表达式一例
php正则表达式匹配邮箱的问题解析
php邮箱验证的正则表达式代码
匹配Email邮箱的正则表达式(完美经典)
在Go中使用正则表达式
php常用正则表达式(日期 电话 中文 邮箱等)
php正则验证email邮箱及抽取内容中email的例子
正则表达式详细基础实例解析
PHP常用用的六个处理正则表达式函数
php常用正则表达式与基础知识