位置: 编程技术 - 正文

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

  • 个人独资企业要注意什么
  • 视同销售行为涉税处理?
  • 出租房屋取得的收入计入什么
  • 税金及附加借贷科目
  • 清算缴纳企业所得税
  • 计量的政府补助是什么
  • 餐饮业增值税是多少
  • 业务提成模版
  • 财产租赁合同印花税率多少
  • 季度预交所得税可以弥补上年度亏损吗
  • 利息股息红利所得
  • 异地预交所得税跨年还能用吗
  • 主营业务收入包括哪些内容
  • 地方教育费附加的会计分录
  • 福利费可以抵扣个税吗
  • 地质灾害评估费收费标准
  • 专票打印的时候密码区压线了能用吗
  • 赔偿金要交增值税吗
  • 建筑合同印花税在哪里交
  • 自产自销农产品企业所得税
  • 费用类有什么科目
  • 免征的教育费附加如何账务处理
  • 进口退运货物基本流程
  • 农产品增值税核定扣除管理建议
  • 领专票需要带什么东西
  • 发票冲红后多交多少税
  • 纺织厂收购棉花如何计税?
  • 小规模企业记账软件哪个好
  • 主营业务利润计算
  • 经营费用与营业收入区别
  • xp系统咋样
  • 年初未分配利润计算公式
  • 无发票 入账
  • 超市赠送消费券怎么用
  • 增值税进项发票不够抵扣怎么办
  • 鸿蒙系统蓝牙耳机声音小怎么办
  • Win10电脑重装系统要多少钱
  • 免抵退税的具体计算方法
  • 学生个人网页制作html5
  • bootz命令
  • 针对多用户实现什么功能
  • date=date
  • 商场售后返租
  • Joe是一款优雅功能强大的Typecho主题功能多上手快
  • 财务章有几种样式
  • 城镇土地使用税减免税政策
  • 已经提完折旧的房产价值评估
  • 企业股权投资收益交增值税吗
  • SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解
  • 短期贷款利息支付
  • 增值税专用发票查询系统官方网站
  • 季度缴纳房租申请怎么写
  • 工会经费记在什么科目
  • 收据可以做收入吗?
  • 其他应付款跨年了
  • 小规模纳税人已付款对方不开发票几年了会计分录
  • 本月无收入还用结转吗
  • 商场水电费应该由谁承担
  • 土地增值税计算题
  • 会计凭证销毁的地方
  • 交易性金融资产公允价值变动计入
  • ubuntu怎么样
  • 电脑xp系统的设置在哪
  • xp系统下载SCSI硬盘的安装、启动、设置教程
  • centos7怎么配置ip地址和网络
  • guardhp.exe是什么意思
  • linux0.11文件系统
  • linuxnamespace入门
  • win10锁屏界面的搜索怎么关
  • linux调整桌面分辨率
  • chrome浏览记录保存多久
  • win sc
  • js cookie用法
  • linux怎么使用c语言
  • onclick和onfocus
  • JS与jQ读取xml文件的方法
  • jQuery Ajax 全局调用封装实例代码详解
  • 宣传费是否要交消费税
  • 个体工商户 浙江
  • 银行最新税率
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设