您的位置:首页 > Web前端 > JavaScript

【JavaScript】正则表达式验证邮箱的注意事项

2017-05-28 23:28 561 查看

第一次正式地使用MarkDown写博客,全程懵逼状态……

学习正则表达式的时候,李老师讲到了验证邮箱地址的两种书写格式:不使用分组&使用分组。下面分别简单总结下。

未用分组

源码

var pattern=/[\w]+.zip|rar|gz/;

var str=’sdflj.zip’;



使用test检测

alert(pattern.test(strZip));

alert(pattern.test(strRar));

alert(pattern.test(strGz));

使用为进行分组的RegExp对邮箱地址进行检测的时候,没有发现任何问题:无论是测试zip、rar还是gz均能正确显示结果。


使用exec检测

alert(pattern.exec(strZip));

alert(pattern.exec(strRar));

alert(pattern.exec(strGz));

但是在使用exec检测的时候,出现了异常。检测zip时能够正常运行,检测rar和gz时却出现了异常,详情如下:

检测zip



检测rar



检测gz



问题分析

1、未对正则表达式进行严格的首尾限制;

2、没有对用“|”进行选择的文件后缀名进行分组。

以上两点原因导致第一个“|”将它前面的所有字符作为一个整体的候选项进行判断,从而出现使用test检测没有问题,使用exec进行检测却出现问题的现象。

使用分组

源码

var pattern=/^([\w])+.(zip|rar|gz)$/;

var strZip=’sdflj354.zip’;

var strRar=’sdflj354.rar’;

var strGz=’sdflj354.gz’;



使用test检测

alert(pattern.test(strZip));

alert(pattern.test(strRar));

alert(pattern.test(strGz));

使用test检测,正常输出结果。


使用exec检测

alert(pattern.exec(strZip));

alert(pattern.exec(strRar));

alert(pattern.exec(strGz));

对正则表达式进行简单的限制和分组后,使用exec检测可以正常输出结果了。但是在使用exec进行检测的时候,返回的是一个个的数组。我们需要截取第一个作为我们的结果即可。
alert(pattern.exec(strZip)[0]);

alert(pattern.exec(strRar)[0]);

alert(pattern.exec(strGz)[0]);

[code]


总结

第一次使用Markdown正儿八级的写博客+第一次写正则表达式的学习总结,感觉非常不错!

感谢您的宝贵时间,祝生活愉快,谢谢~~

——书生
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息