位置: 编程技术 - 正文

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的判断类型)

  • 动产租赁适用税率
  • 汇算清缴补缴税款如何做账
  • 买交强险需要把车开过去吗
  • 对公户取备用金怎么取
  • 车船税应该计入什么费用
  • 政府土地收储是什么意思
  • 企业所得有哪些税种
  • 银行收到对方付款的会计分录
  • 人力资源外包公司排名
  • 如果公司没有报税
  • 营改增之后还有营业税金及附加吗
  • 对公账户提取备用金可以每天提现嘛
  • 职工教育经费列支范围及标准
  • 企业三废处理方案
  • 企业所得税预缴税款表怎么填
  • 初级备考心得总结
  • 购买办公用品未取得发票怎么办
  • 红冲的普通发票要给对方吗
  • 以前年度资产损失,汇算清缴怎么填表
  • 采购过程中产生的物流成本案例分析
  • 企业买断政策
  • 实际投资收益率等于什么
  • os x 10.10 yosemite自动纠正怎么关?os x yosemite自动纠正功能关闭教程
  • 什么是产品生产者之间争取最有利的关系
  • 乱账怎么调整
  • 优先股转化
  • 最贵的电脑键盘
  • 微信公众号web开发
  • php数组排列组合
  • vue3 ref dom
  • 承租方的物品如何处理
  • 专票地址错了要作废吗
  • 无形资产转让的最低收费额如何确定?
  • 个人独资企业用企业资金进行个人消费
  • 个体户开普票有没有完税证明
  • 企业基本养老金退休后能领多少
  • ie8 ie8i
  • 增值税补充申报表不填可以吗
  • 出口货物离岸价差异原因说明表在电子税务局的位置
  • 计提所得税后再结转本年利润吗
  • 母公司给子公司开票会有税务风险吗
  • 免税农产品按多少抵扣
  • 会计凭证的做账原则
  • 个税计提多了怎么办,跨年度了
  • 企业买期货账务处理
  • 外贸企业出口货物的计税依据
  • 筹建期的开办费开业后如何处理
  • 怎么查企业适用的会计准则
  • 进项票是服务费怎么做会计分录
  • 营业成本包括哪些会计科目
  • sql 关系数据库
  • mysql8.0 win7
  • mac安装mysql
  • mysql使用入门教程视频
  • telnet root
  • 电脑怎样进入安全模式
  • Ubuntu远程桌面连接
  • slserves.exe - slserves是什么进程
  • win版本微信
  • mac无法开机怎么办
  • noads.exe - noads是什么进程 有什么用
  • 开关光驱是平移还是旋转
  • 没有启动界面
  • windows10储存
  • unity3d应用开发
  • vue前端后端
  • jquery教程chm
  • flask完整项目实例
  • 怎么把两个文件中的内容合并
  • u3d unity3d
  • jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
  • jquery旋转动画
  • nodejs处理excel
  • [置顶] [Android Studio 权威教程]最实用的快捷键
  • 国家税务总局咨询热线电话
  • uk在哪里看开票截止日期
  • 光伏发电地方税收
  • 河北税务云办税厅官方
  • 如何查询甘肃省清产核资系统扶贫项目资产金额
  • 新旧鞋号码对比图
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设