位置: 编程技术 - 正文

JavaScript 学习笔记(十四) 正则表达式(javascript要怎么学)

编辑:rootadmin

RegExp类 RegExp对象的构造函数可以带一个或两个参数 第一个参数是描述需要进行匹配的模式字符串,如果还有第二个参数,这个参数则制定了额外的处理指令。 一、基础 1.1使用RegExp对象 test()方法 测试是否匹配。如果给定字符串(只有一个参数)匹配这个模式,它就返回true,否则返回false exec()方法 有一个字符串参数,返回一个数组。数组中的第一个条目是第一个匹配,其他的是反向引用。(即数组中只有一个,并且是第一个匹配的) 返回一个包含在字符串中的所有匹配的数组。 var strAAA = "a bat, a Cat, a fAt baT, a faT cat"; var regAt = new RegExp("at", "gi"); var arrMatch = strAAA.match(regAt); //注意:字符串.match(参数是匹配字符)跟上面相反 search()方法 与indexOf()有些类似,返回在字符串中出现的一个匹配的位置。它的参数是一个RegExp对象而非仅仅一个子字符串。 1.2扩展字符串方法 replace()方法 可以用第二个参数替换第一个参数,而在这里第一个参数也可以是一个正则表达式。 var strBBB = "The Sky is red."; //将上面这句话中的所有s替换,用正则表达式找出所有匹配的 var strNewBBB = strBBB.replace(/s/gi, "##"); //把所有的“s”(不管大小写)都替换成## 再进行升级一下,第二个参数也可以是一个函数 在这个例子中,在函数中的sMatch的值总为"red" (因为这是唯一匹配的模式)."red"的首次出现被替换为函数的返回值"blue". 附加: 对于书上这句话“因为这是唯一匹配的模式”我认为应该是这个意思吧,replace只有两个参数,第一个参数找出来的是唯一的,那个function的参数sMatch应该就是前面的第一个参数的值,唯一匹配模式。。。 split()方法 正则表达式reComma中必须在逗号前有一个反斜杠,因为逗号在语法中有特殊含义,必须经过转义。 二、简单模式 2.1元字符 正则表达式用到的所有元字符有: ( [ { ^ $ | ) ? * + . 一共个。在任何时候要用到这些元字符的时候就需要转义,也就是在前面加上反斜杠。 例: var reQMark = /?/; //转义 var reQMark=new RegExp("\?"); //这里需要注意,双重转义,因为本身反斜杠也是需要转义 所以我们以后应该尽量使用第一种情况,字面量语法!Perl的风格 2.2使用特殊字符 另外,还有其他一些预定义的特殊字符,如下表所列: 字符 描述 ---------------------------------------------------- t 制表符 n 换行符 r 回车符 f 换页符 a alert字符 e escape字符 cX 与X相对应的控制字符 b 回退字符 v 垂直制表符 空字符 ---------------------------------------------------- 2.3字符类 将一些字符放入方括号中,可以很有效的告诉正则表达式去匹配第一个、第二个、第三个字符等等。 //①字符类----简单类 var sToMatch = "a bat,a Cat,a fAt baT,a faT cat"; //匹配以bat或cat或fat的正则表达式 var reBatCatFat = /[bcf]at/gi; //var reBatCatRat=/[ucf]at/gi; 使用Unicode形式 var arrMatches = sToMatch.match(reBatCatRat); alert(arrMatches.join(",")); //输出"bat,Cat,fAt,baT,faT,cat" //②字符类----负向类 var sToMatch = "a bat,a Cat,a fAt baT,a faT cat"; //匹配以at结尾,但是不以b或c开头的正则表达式 var reBatCatRat = /[^bc]at/gi; //脱字符^表示不能匹配后面跟着的字符 var arrMatches = sToMatch.match(reBatCatRat); alert(arrMatches.join(",")); //输出 "fAt,faT" //③字符类----范围类 //指定从a到z之间的范围:[a-z]. 这里是区分大小写的 var sToMatch = "num1,num2,num3,num4,num5,num6,num7,num8,num9"; var reOneToFour = /num[1-4]/gi; //从1到4 var arrMatches = sToMatch.match(reOneToFour); alert(arrMatches.join(",")); //输出 "num1,num2,num3,num4" //④字符类----组合类 组合类(combination class)是由几种其他的类组合而成的字符类. 假如要匹配所有的从a-m的字母以及从1-4的数字,以及一个换行符,那么所用到的类应该是这样: [a-m1-4n] 注意在内部的类之间不要有空格. //⑤字符类----预定义类 代码 等同于 匹配 ---------------------------------------------------------------- . [^nr] 除了换行和回车之外的任意字符 d [0-9] 数字 D [^0-9] 非数字字符 s [ tnx0Bfr] 空白字符 S [^ tnx0Bfr] 非空白字符 w [a-zA-Z_0-9] 单词字符(所有的字符、数字和下划线) W [^a-zA-Z_0-9] 非单词字符 ----------------------------------------------------------------- 使用预定义字符可以明显地使模式匹配变得简单。例如,假设想匹配3个数字: var sToMatch = " abc"; var reThreeNums = /[0-9][0-9][0-9]/; //var reThreeNums=/ddd/; //用预定义比较简洁 alert(reThreeNums.test(sToMatch)); //输出 "true" 2.4量词 量词(quantifier)可以指定某个特定模式出现的次数。当指定某个模式应当出现的次数时,可以指定硬性数量,也可以指定软性数量。 1.简单量词 -------------------------------------------------------------------- 代码 描述 -------------------------------------------------------------------- ? 出现零次或一次 * 出现零次或多次(任意次) + 出现一次或多次(至少出现一次) {n} 一定出现n次 {n,m} 至少出现n次但不超过m次 {n,} 至少出现n次 -------------------------------------------------------------------- 例如,假设想匹配单词bread,read或red.使用问号量词,则可以只要使用一个表达式就可以匹配这三个: var reBreadReadOrRed = /b?rea?d/; 或者var reBreadReadOrRed = /b{0,1}rea{0,1}d/; 2.贪婪的、惰性的和支配性的量词 贪婪量词先看整个的字符串是否匹配。如果没有发现匹配,它去掉该字符串中的最后一个字符,并再次尝试。如果还是没有发现匹配,那么再次去掉最后一个字符,这个过程会一直重复直至到发现一个匹配或者字符串不剩任何字符。 懒性量词先看字符串中的第一个字母是否匹配。如果单独这个字符还不够,就读入下一个字符,组成两个字符的字符串。如果还是没有发现匹配,惰性量词继续从字符串中添加字符直到发现匹配或者整个字符串都检查过也没有匹配。惰性量词和贪婪量词的工作方式恰好相反。 支配量词只尝试匹配整个字符串。如果整个字符串不能产生匹配,不做进一步尝试。支配量词其实简单的说,就是一刀切。 -------------------------------------------------------------------- 贪婪 惰性 支配 描述 -------------------------------------------------------------------- ? ?? ?+ 零次或一次出现 * *? *+ 零次或多次出现 + +? ++ 一次或多次出现 {n} {n}? {n}+ 恰好n次出现 {n,m} {n,m}? {n,m}+ 至少n次至多m次出现 {n,} {n,}? {n,}+ 至少n次出现 -------------------------------------------------------------------- 看下面例子更好的理解以上三种量词 var str = "abbbaabbbaaabbb"; var reg1 = /.*bbb/g; var reg2 = /.*?bbb/g; //var reg3 = /.*+bbb/g; //在Visual Studio里报错..... var arrMatches1 = str.match(reg1); var arrMatches2 = str.match(reg2); //var arrMatches3 = str.match(reg3); alert("贪婪的:" + arrMatches1.join(",") + "n惰性的:" + arrMatches2.join(",")); 主要是匹配的一个过程不同!

推荐整理分享JavaScript 学习笔记(十四) 正则表达式(javascript要怎么学),希望有所帮助,仅作参考,欢迎阅读内容。

JavaScript 学习笔记(十四) 正则表达式(javascript要怎么学)

文章相关热门搜索词:javascript入门教程,javascript入门教程,javascript如何学,javascript如何学,javascript基础笔记,javascript如何学,javascript入门教程,javascript入门教程,内容如对您有帮助,希望把文章链接给更多的朋友!

javascript 的Document属性和方法集合 document.title//设置文档标题等价于HTML的title标签document.bgColor//设置页面背景色document.fgColor//设置前景色(文本颜色)document.linkColor//未点击过的链接颜色docume

JavaScript 判断判断某个对象是Object还是一个Array 1.typeof操作符.对于Function,String,Number,Undefined等几种类型的对象来说,他完全可以胜任,但是为Array时vararr=newArray("1","2","3","4","5");alert(typeof(arr));你会

JavaScript 学习笔记(十五) 事件事件是DOM(文档对象模型)的一部分。事件流就是事件发生顺序,这是IE和其他浏览器在事件支持上的主要差别。一、事件流1、冒泡型事件IE上的

标签: javascript要怎么学

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

上一篇:JavaScript 学习笔记(十三)Dom创建表格(javascript学习指南)

下一篇:JavaScript 判断判断某个对象是Object还是一个Array(js的判断类型)

  • 申报个税后发生扣工资
  • 防伪税控技术维护费怎么申报
  • 交通运输企业车辆折旧能加速扣除
  • 小规模纳税人超500万后何时认定为一般纳税人
  • 固定资产残值怎么处理什么时候处理
  • 收到退税如何记账
  • 房产过户需要交个人所得税吗
  • 研发费用的台账有哪些
  • 进项较大航天信息怎么填
  • 受托软件开发不转让著作权的账务处理
  • 2018年企业所得税政策变化
  • 机动车强制保险新政策
  • 已经作废了的发票怎么查
  • 网上银行转账被骗能追回吗
  • 服装外贸进出口
  • 公司注销要给钱吗
  • 无偿取得土地使用权的会计分录
  • 材料票可以直接在税务局开吗
  • 审计的内容是什么
  • 建筑行业成本预算和施工方案哪个更有含金量
  • 清算期间未申报债权
  • 企业拆迁 补偿
  • 增值税专用发票怎么开
  • 如何理解应交税费未交增值税
  • 工会经费申报的依据
  • 浅谈25年Linux内核开发经历总结出来的九条经验
  • 房地产企业何时结转利润
  • 非合理损耗怎么做分录
  • 备抵法是什么科目
  • swoole如何使用
  • win7指定程序用指定网卡
  • vue使用pdf.js
  • 如何使用微信公交付款
  • 外资企业出租房产税优惠
  • 增值税结算方式的筹划
  • 低值易耗品报废时有残料价值收回的应冲减当月成本费用
  • 国债持有期间未兑付的利息所得税
  • 合同中违约金
  • 简述php的概念和特点
  • 实缴资本多久可以取出随便用吗
  • 织梦专题页模板
  • centos下编写贪吃蛇吗
  • 普票和专票的
  • sql查询排名前三
  • 一般纳税人账务不健全是否处罚
  • 计入资本公积的固定资产转出
  • 固定资产一次计提折旧
  • 不动产初始登记证明
  • 利润表研发费用和管理费用
  • 公司一般户的钱怎么拿出来
  • 公司试驾车怎么开票
  • 对存在标的资产的亏损合同,企业应首先对标的资产
  • 样品制作公司
  • 工程项目必须购买保险吗
  • 企业汇算清缴需要提供什么资料
  • 计划成本法和实际成本法的适用范围
  • 内账税费计入什么科目
  • 食品企业生产成本管理的案例分析
  • linux实现mysql数据库每天自动备份定时备份
  • 出现windows boot manager
  • 禁用windows杀毒
  • ubuntu20.04常用软件
  • 1sass.exe是什么程序
  • win10专业版怎么安装
  • win10正式版版本
  • windows打补丁后无法启动
  • window10的ie
  • win10能运行的单机游戏
  • 90后的毕业照
  • 关于植物的现代诗
  • androidstudio调用so文件
  • linux find命令的使用
  • css条件语句
  • jquery easyui 教程
  • python语言解析
  • javascript如何学
  • js设计模式有什么用
  • 个体户开票怎么开步骤
  • 教育附加费网上缴费
  • 关于进一步加强工作纪律改进工作作风的通知
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设