1、exec返回数组
(1)字符串
b、第二种
(3)捕获型分组、非捕获性分组
结果:a[0]——123a
a[1]——123
a[2]——a
非捕获性分组:只要在不需要捕获返回的分组前边加?:
(4)嵌套分组——从外往内依次获取,以“?”分隔开来
结果:第一步——a[0]:整个字符串abc
第二步——a[1]:匹配到第一个分组(a?(b?(c?)))abc
第三步——a[2]:匹配到第二个分组(b?(c?))bc
第三步——a[3]:匹配到第三个分组(c?)c
(5)前瞻性捕获——表示获取字符串前边的,以“?=”连接
结果:返回了goo
(6)转义特殊字符“\”
注意:只有用“\”转义正则表达式中特殊字符才能访问
(7)换行模式
结果:#baidu
#google
#bing
2、常用的正则
(1)检查电子邮政编码
(2)检查文件压缩包
(3)删除多余的空格
先匹配开头:从头开始(^)匹配——“\s”
再匹配结尾:结尾($)
(注意:惰性模式避免全部删除,贪婪模式会全部删除)
结果:“goo gle”
c、使用分组获取
结果:“goo gle”
(5)验证电子邮件(简单的电子邮件验证)
结果:true
(1)字符串
var pattern=/^[a-z]+\s[0-9]{4}$/;
var str='google 2012';
alert(pattern.exec(str));
//返回一个包含字符串的数组;
(2)字母
a、第一种
var pattern=/^[a-z]+/; //只匹配到字母;
var str='google 2012';
alert(pattern.exec(str)); //只返回google的字符串数组
b、第二种
var pattern=/^([a-z]+)\s([0-9]{4})$/; //使用了分组;
var str='google 2012';
var a=pattern.exec(str);
//alert(a.length); //3
alert(a[0]); //返回匹配的整个字符串;
alert(a[1]); //返回匹配到的第一个分组字符串;
alert(a[2]); //返回匹配到的第二个分组的字符串;
(3)捕获型分组、非捕获性分组
var pattern=/(\d+)([a-z])/; //捕获性分组,所有分组都捕获返回;
var str='123abc';
var a=pattern.exec(str);
结果:a[0]——123a
a[1]——123
a[2]——a
非捕获性分组:只要在不需要捕获返回的分组前边加?:
var pattern=/(\d+)(?:[a-z])/; //捕获性分组,所有分组都捕获返回;
var str='123abc';
var a=pattern.exec(str);
(4)嵌套分组——从外往内依次获取,以“?”分隔开来
var pattern=/(a?(b?(c?)))/; //嵌套分组,从外往内获取;
var str='123abc';
alert(pattern.exec(str));
结果:第一步——a[0]:整个字符串abc
第二步——a[1]:匹配到第一个分组(a?(b?(c?)))abc
第三步——a[2]:匹配到第二个分组(b?(c?))bc
第三步——a[3]:匹配到第三个分组(c?)c
(5)前瞻性捕获——表示获取字符串前边的,以“?=”连接
var pattern=/goo(?=gle)/; //goo后边必须是gle才会返回goo,这里的返回是“goo”,而不是“google”
var str='google';
alert(pattern.exec(str));
结果:返回了goo
(6)转义特殊字符“\”
注意:只有用“\”转义正则表达式中特殊字符才能访问
var pattern=/\[g; //goo后边必须是gle才会返回goo,这里的返回是“goo”,而不是“google”
var str='google';
alert(pattern.test(str));
(7)换行模式
var pattern=/^\d+/g; //启动了换行模式,同时限制了首
var str='1.baidu\n2.google\n3.bing';
alert(str.replace(pattern,'#')); //用“#”代替“1/2/3”
结果:#baidu
#bing
2、常用的正则
(1)检查电子邮政编码
var pattern=/[1-9][0-9]{5}/; //正则模式——第一位不可为0,后五位0-9(不需要考虑首尾)
var str='223444'; //必须是6位,数字,第一位不能为0;
//var str='This is 223444'!;
alert(pattern.test(str)); //true;
(2)检查文件压缩包
//文件名.扩展名
var pattern=/^[\w]+\.(zip|gz|rar)$/; //“|”选择符必须用分组符号包含;“\w+”匹配字符串,加上“^”来限定首字符开始匹配;
//先定义一个压缩包;
var str='23.zip'; //扩展名为zip,gz,rar
alert(pattern.test(str)); //返回true
(3)删除多余的空格
var pattern=/^\s/g; //g必须全局,才能全部匹配;
var str='11 22 33';
var result=str.replace(pattern,''); //把空格匹配为无空格;
alert(result);
结果:返回“112233”
注意:若无“/g”表示全局,则会显示“1122 33”,职匹配了开头
(4)删除首尾空格
a、开头+结尾空格分别删除(以空格代替)先匹配开头:从头开始(^)匹配——“\s”
再匹配结尾:结尾($)
var pattern=/^\s/+; //“^”表示开头匹配,且“\s”只匹配了第一个,加一个“+”匹配所有;
var str=' goo gle ';
var result=str.replace(pattern,''); //把空格匹配为无空格;
pattern=/\s+$/; //匹配结尾;
result=result.replace(''); //用无空格代替;
alert(result);
结果:“goo gle”(只删除了首尾,未删除中间的空格)
(注意:惰性模式避免全部删除,贪婪模式会全部删除)
var pattern=/^\s/+(.+?)\s+$/; //“^”表示开头匹配,且“\s”只匹配了第一个,加一个“+”匹配所有;
var str=' goo gle ';
var result=pattern.exec(str)[1];
alert('|'+result+'|');
结果:“goo gle”
c、使用分组获取
var pattern=/^\s/+(.+?)\s+$/; //“^”表示开头匹配,且“\s”只匹配了第一个,加一个“+”匹配所有;
var str=' goo gle ';
var result=str.replace(pattern,'$1'); //使用分组,$1模式
alert('|'+result+'|');
结果:“goo gle”
(5)验证电子邮件(简单的电子邮件验证)
var pattern=/([\w\.\-])@(\w\-)\.(a-zA-Z){2,4}/;
//整体分组,开头表示可以放a-z,A-Z,0-9,“.”或“-”,从头匹配(^)
var str='yc23.com@gmail.com';
alert(pattern.test(str));
结果:true