Javascript高级程序设计——9.正则表达式(2)
来源:互联网 发布:语音识别 算法 编辑:程序博客网 时间:2024/04/30 02:29
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); //3alert(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,raralert(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
0 0
- Javascript高级程序设计——9.正则表达式(2)
- Javascript高级程序设计——9.正则表达式(1)
- 《JavaScript高级程序设计》笔记——正则表达式
- 《JavaScript高级程序设计》——函数表达式
- JavaScript高级程序设计学习笔记6:正则表达式
- JavaScript高级程序设计(五)函数表达式
- javascript高级程序设计(函数表达式)
- 读书笔记—JavaScript高级程序设计(一)
- JavaScript高级程序设计——知识点整理(Part 2)
- JavaScript高级程序设计— 转换
- javascript正则表达式高级篇
- Javascript—正则表达式
- Javascript—正则表达式
- javascript 高级程序设计(一) 正则表达 RegExp实例属性
- 学习《JS高级程序设计》(5)——正则
- JavaScript高级程序设计(读书笔记)之函数表达式
- C#高级程序设计(八)——Lambda表达式
- C#高级程序设计(九)——表达式树
- 11gr2 rac改IP系列之二:修改VIP为同网段其它IP
- linux下安装Django与卸载
- mysql 修改表结构语句
- Nginx Location配置总结
- Java小程序之集合框架模拟数据库实现用户登录和注册功能
- Javascript高级程序设计——9.正则表达式(2)
- 11gr2 rac改IP系列之三:修改SCAN IP为同网段其它IP
- MMO与弱交互游戏的服务端技术区别
- URL转义
- 场外资金加速入场 大盘吹起牛市号角!
- java中的NIO
- C语言练习
- untiy HTC开发 入门教程
- 解释器模式