第一次正式地使用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]);
总结
第一次使用Markdown正儿八级的写博客+第一次写正则表达式的学习总结,感觉非常不错!
感谢您的宝贵时间,祝生活愉快,谢谢~~
——书生