先说出常见的邮箱号格式:
观察特点
1、@左边:可以是字母数字下划线,甚至特殊符号-也有,可以出现一次或更多次
2、@:一定有@特殊符号
3、@右边:其中qq. 、163. 当成一个整体来匹配,其中yoo邮箱有yoo. 和com. ,说明这个整体可以出现多次
4、最后只能是字母


代码如下(注意下文说明)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
</body>
<script type="text/javascript">
//邮箱正则
var reg2 = /^[0-9a-zA-Z_-]+\@(?:[0-9a-zA-Z_-]+\.)+[a-zA-Z]{2,6}$/;
console.log(reg2.test('64653465@qq.com')); // true
console.log(reg2.test('187_111-222@163.com')); // true
console.log(reg2.test('gsfgs@yoo.com.cn')); // false
console.log(reg2.test('gsdfs@itcast.cn')); // false
</script>
</html>

注意:由于上面正则括号的内容我们只是当成一个整体来匹配,但是后续没有引入它,为了优化,不让匹配的内容进入正则缓冲区,在括号前面加个?:来进行优化 。
var reg = /^[0-9a-zA-Z_-]+@(?:[0-9a-zA-Z_]+.)+[a-zA-Z]{2,6}$/

非捕获组,外层就不会有个虚线框包裹着
注意:
1、在正则字符组[]中的特殊字符可以不用转义,如[-_+@.]
2、因为+代表前面的规则可以出现一次或多次,如果写在字符组[]中,就是匹配一个+符号。
建议不要把+写在字符组的最后面,会出现错误。
网友评论