位置: 编程技术 - 正文

JavaScript高级程序设计(第3版)学习笔记12 js正则表达式(javascript高级程序设计pdf下载)

编辑:rootadmin
需要指出的是,这里只是总结了正则表达式的常用的且比较简单的语法,而不是全部语法,在我看来,掌握了这些常用语法,已经足够应对日常应用了。正则表达式不只是应用在ECMAScript中,在JAVA、.Net、Unix等也有相应应用,这篇文章则是以ECMAScript中的正则表达式为基础总结的。一、正则表达式基础

1、普通字符:字母、数字、下划线、汉字以及所有没有特殊意义的字符,如ABC。在匹配时,匹配与之相同的字符。

2、特殊字符:(需要时,使用反斜杠“”进行转义)

字符含义字符含义字符含义字符含义a响铃符 = x^匹配字符串的开始位置b匹配单词的开始或结束{n}匹配n次f换页符 = x0C$匹配字符串的结束位置B匹配不是单词开始和结束的位置{n,}匹配至少n次n换行符 = x0A()标记一个子表达式的开始和结束d匹配数字{n,m}匹配n到m次r回车符 = x0D[]自定义字符组合匹配D匹配任意不是数字的字符[0-9]匹配0到9中任意一个数字t制表符 = x{}修饰匹配次数的符号s匹配任意空白字符[f-m]匹配f到m中任意一个字母v垂直制表符 = x0B.匹配除换行符外的字符S匹配任意非空白字符 eESC符 = x1B?匹配0或1次w匹配字母或数字或下划线或汉字 xXX使用两位十六进制表示形式,可与该编号的字符匹配+匹配1或多次W匹配任意不是字母、数字、下划线和汉字的字符 uXXXX用四位十六进制表示形式,可与该编号的字符匹配*匹配0或多次[^x]匹配除x外的所有字符 x{XXXXXX}使用任意位十六进制表示形式,可与该编号的字符匹配|左右两边表达式之间“或”关系[^aeiou]匹配除aeiou外的所有字符

上面列举的这些特殊字符,可以大致的分为:

(1)不便书写字符:如响铃符(a)、换页符(f)、换行符(n)、回车符(r)、制表符(t)、ESC符(e)

(2)十六进制字符:如两位(x)、四位(xB)、任意位(x{AD1})

(3)表示位置字符:如字符串开始(^)、字符串结束($)、单词开始和结束(b)、单词中间(B)

(4)表示次数字符:如0或1次(?)、1或多次(+)、0或多次(*)、n次({n})、至少n次({n,})、n到m次({n,m})

(5)修饰字符:如修饰次数({})、自定义组合匹配([])、子表达式(())

(6)反义字符:

  (A)通过大小写反义:如b和B、d和D、s和S、w和W

  (B)通过[^]反义:如[^x]、[^aeiou]

  (C)其它特例:如n和.也构成反义

(7)范围字符:如数字范围([0-9])、字母范围([f-m])

(8)逻辑字符:如表示或(|)

3、转义

(1)使用反斜杠“”转义单个字符

(2)使用“Q...E”转义,将表达式中间出现的字符全部作为普通字符

(3)使用“U...E”转义,将表达式中间出现的字符全部作为普通字符,并且将小写字母转换成大写匹配

(4)使用“L...E”转义,将表达式中间出现的字符全部作为普通字符,并且将大写字母转换为小写匹配

4、贪婪模式与懒惰模式

   如果正则表达式中含有次数字符时,一般情况下,会尽可能匹配更多的字符,比如用l*n来匹配linjisong的话,会匹配linjison,而不是 lin,这种模式也就是正则表达式的贪婪模式;相对应的,可以通过添加字符“?”来设置为懒惰模式,也即尽可能匹配更少字符。如*?表示重复0次或多次, 但尽可能少重复。

5、分组和反向引用

(1)用小括号(())将表达式包含,可以使得表达式作为一个整体来处理,从而达到分组的目的。

(2)默认情况下,每个分组会自动获取一个组号,按照左括号的顺序,从1向后编号。

(3)引擎在处理时,会将小括号内部表达式匹配的内容保存下来,以方便在匹配过程中或匹配结束后进一步处理,可以使用反斜杠和组号来引用这个内容,如1表示第一个分组匹配的文本。

(4)也可以自定义组名,语法是(?<name>exp),这个时候反向引用时,还可以使用k<name>。

(5)也可以不保存匹配内容,也不分配组号,语法是(?:exp)。

(6)小括号有一些其他特殊语法,这里列举几种,不再深入讨论:

分类代码/语法说明捕获(exp)匹配exp,并捕获文本到自动命名的组里(?<name>exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号零宽断言(?=exp)匹配exp前面的位置(?<=exp)匹配exp后面的位置(?!exp)匹配后面跟的不是exp的位置(?<!exp)匹配前面不是exp的位置注释(?#comment)这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

到此,对于理解常用的正则表达式已经足够了,若想继续学习正则表达式的,可以参考正则表达式分钟入门教程。下面再熟悉一下Javascript中的正则表达式实现。

二、Javascript中的正则表达式对象RegExp

1、创建正则表达式

(1)使用字面量:语法 var exp = /pattern/flags;

  A、pattern是任何正则表达式

  B、flags有三种:g表示全局模式、i表示忽略大小写、m表示多行模式

(2)使用RegExp内置构造函数:语法 var exp = new RegExp(pattern, flags);

  A、使用构造函数时,pattern和flags都是字符串形式,所以对于转义字符需要双重转义,例如:

字面量构造函数/[bc]at/"\[bc\]at"/.at/"\.at"/name/age/"name\/age"/d.d{1,2}/"\d.\d{1,2}"/w\helllo\/"\w\\hello\\"

说明:ECMAScript 3使用字面量时会共享一个RegExp实例,使用new RegExp(pattern,flags)会为每个正则表达式创建一个实例;ECMAScript 5规定每次都创建新实例。

2、实例属性

(1)global:布尔值,表示是否设置了g标志。

(2)ignoreCase:布尔值,表示是否设置了i标志。

(3)multiline:布尔值,表示是否设置了m标志。

(4)lastIndex:整数,表示开始搜索下一次匹配项的字符位置,从0算起。

(5)source:字符串,表示按照字面量形式创建的字符串模式,即便实例使用构造函数创建,存储的也是字面量形式的字符串模式。

3、实例方法

(1)exec()方法

  A、一个参数,即要应用模式的字符串,返回第一个匹配项信息的数组,没有匹配时返回null。

  B、返回的数组是Array实例,但还额外有input和index属性,分别表示应用正则表达式的字符串和匹配项在字符串中的位置。

  C、匹配时,在返回的数组中,第1项是与整个模式匹配的字符串,其他项是与模式中的分组匹配的字符串(如果没有分组,则返回数组只有1项)。

  D、对于exec(),即使设置了g,每次返回的也是一个匹配项,不同的是,设置了g,多次调用exec的开始搜索位置不同,没有设置g,每次都从开始搜索。

(2)test()方法

  接受一个字符串参数,匹配返回true,不匹配返回false。

三、实例分析

下面看一个出自PhoneGap源码中用于格式化的正则表达式分析:这里pattern和pattern2都包含三个分组,第2、3个分组相同,第2个分组(.)匹配任意一个非换行字符,第3个分组(.*)尽可能多(贪婪模式)的匹配任意非换行字符,pattern中的第1个分组(.*?)尽可能少(懒惰模式)的匹配任意非换行字符,而pattern2中的第1个分组(.*)则是尽可能多(贪婪模式)的匹配任意非换行字符了。因此在保证整个模式匹配成功(从而需要保留一个%字符用于匹配正则表达式中的%)的前提下,pattern中第1个分组匹配成了lin,而pattern2中第1个分组匹配成了lin%,分析到这里上例中的输出也就不难理解了。

推荐整理分享JavaScript高级程序设计(第3版)学习笔记12 js正则表达式(javascript高级程序设计pdf下载),希望有所帮助,仅作参考,欢迎阅读内容。

JavaScript高级程序设计(第3版)学习笔记12 js正则表达式(javascript高级程序设计pdf下载)

文章相关热门搜索词:javascript高级程序设计电子版,javascript高级程序设计电子版,javascript高级程序设计第五版 pdf下载,javaScript高级程序设计,javaScript高级程序设计,javaScript高级程序设计有几版,javascript高级程序设计电子版,javascript高级程序设计pdf下载,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript高级程序设计(第3版)学习笔记 ECMAScript5新特性 接下来应该是BOM和HTML5了,但是鉴于ECMAScript5相对于ECMAScript3的新变化比较多,而且这些变化也非常的有意思,因此在这篇文章中再将我认为的有意思的

js indexOf()定义和用法 返回String对象内第一次出现子字符串的字符位置。strObj.indexOf(subString[,startIndex])参数strObj必选项。String对象或文字。subString必选项。要在String对象中查

JavaScript window.document的属性、方法和事件小结 javascript中window.document的属性、方法和事件的总结,有需要的朋友可参考一下本文章。属性:Attributes存储节点的属性列表(只读)childNodes存储节点的子节点

标签: javascript高级程序设计pdf下载

本文链接地址:https://www.jiuchutong.com/biancheng/380516.html 转载请保留说明!

上一篇:JavaScript高级程序设计(第3版)学习笔记11 内建js对象(javascript高级程序设计最新版)

下一篇:JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性(javascript高级程序设计电子书)

  • 用友软件80端口被占用解决方法
  • 甲方应项目具备开工条件
  • 一次性发放年终奖怎么税务筹划
  • 免税 普票
  • 金税盘递减税款2022
  • 资产减值损失可以抵税吗
  • 停车费收入增值税申报表怎么填
  • 残保金申报表中的上年工资总额指所属期的上一年吗
  • 发票查询发票代码有误
  • 签了合同没开票
  • 存货呆滞是什么意思
  • 企业清算时卖了车怎么办
  • 汇算清缴前取得暂估发票
  • 企业生产设备产品有哪些
  • 收取境外服务费收入会计分录
  • 企业实际发生的与取得收入有关的、合理的支出,包括
  • 发票纳税人识别号错了能重新开吗
  • 企业个税网上申报时间
  • 个税申报需要补税是什么情况
  • 分公司企业所得税怎么缴纳
  • 理财公司收到客户投资款怎么处理
  • 剑灵玩一会就崩溃
  • win10电脑输入法不见了怎么恢复
  • wan口ip地址和lan口ip地址不能
  • php抽象类使用场景
  • 公司准备上市到真正上市要多久
  • php的数组函数
  • win10开机强制进入修复模式
  • wamp设置
  • 所得税和所得税税率
  • 工程未竣工结算但质保期已过
  • 关联企业拆借资金的税务处理
  • 从奎雷英山口看到的 Leum na Luirginn湖和Cleat湖,英国斯凯岛 (© Sebastian Wasek/Sime/eStock Photo)
  • 国家最高科技奖2018
  • aes-ecb和aes-gcm
  • easyui分页传递表单参数
  • PyTorch 深度学习实战 |用 TensorFlow 训练神经网络
  • uni-app--》uni-app的生命周期讲解
  • 发票密码什么意思
  • 如何使用rank函数排名
  • 预缴增值税借方余额
  • 平价转让股权怎么交企业所得税
  • 公司卖地如何交税
  • 归还股东投资款
  • 汽修厂利润能达到一半吗
  • 补贴,津贴是否合理
  • 资产处置损益是当期损益吗
  • 公司股东的权利和义务有哪些
  • 工程施工的间接费用如何归集分配
  • mysql日志有哪些
  • 海关双抬头进口增值税发票如何抵扣
  • 补充登记法的操作步骤
  • 递延所得税的会计核算
  • 建造合同信息表
  • 购进固定资产没有发票怎么入账
  • 材料暂估入库的账务处理
  • 向投资者分配现金股利的会计分录?
  • 股权转让的资料有哪些
  • 持有至到期投资是债权投资吗
  • 工厂没给工人买社保我们应该找哪个部门
  • ubuntu桌面右键
  • centos怎么查看文件
  • freebsd ports安装
  • win10商店是什么
  • 直接玩鬼泣4
  • win10 自带
  • win7 注册表 ahci
  • win7系统桌面图标不见了怎么办
  • iptables防火墙规则
  • android app启动过程
  • Quick cocos2dx-Lua(V3.3R1)学习笔记(8) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧
  • 腾讯im sdk
  • javascript的介绍
  • sql怎么增删改
  • 安卓手机如何查
  • 浙江省发票勾选认证操作流程2021
  • 非营利组织认定条件
  • 东莞税收突破2000亿
  • 郑州国税局投诉电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设