js正则表达式匹配邮箱问题

<script type="text/javascript">
var str2 = '1234565@qq.c!!om';
var reg = /(^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+)|(^$)/;
alert(reg.test(str2));
</script>
为什么为返回true;
最新回答
故人的歌

2026-03-24 09:48:55

// 少了一个结束符号 所以匹配到'1234565@qq.c'这一段就返回true了
// 下面加了结束符号$
/(^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+$)|(^$)/;

// 但还是 建议改成如下
/(^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+$)|(^$)/;