学习地址:慕课网  JavaScript正则表达式
学习地址:慕课网  JavaScript正则表达式通配符:*测试正则表达式:  在线工具:http://regexper.com    也可以从npm上安装到本地运行例:^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$\d  数字\d?  数字 一个或零个\d+  数字 一个或多个\d{3} 数字 3个\d{3,5} 数字  3-5个\d* 数字 任意个例:将某小写单词转换为大写\b 单词边界\bis\b  只匹配单词is例:去除http://或https://查找:http:(\/\/.+\.jpg)替换:$1. 表示任意字符http:\/\/.+\.jpg      匹配http://XXXXXXX.jpg  注意转义http:(\/\/.+\.jpg)    分组,方便过滤
    $1表示组例:日期替换查找:^(\d{4})[/-](\d{2})[/-](\d{2})$   匹配2018/03/18或者2018-03-18替换:$2-$3-$1     替换为:03-18-2018^   表示开头\d{4}     四位数字[/-]     /或者-\d{2}   2位数字()      利用()分组,$1 $2 $3$     表示结尾JavaScript正则表达式:通过RegExp对象支持正则表达式例001.js:var reg = /\bis\b/;   只匹配第一个var reg = /\bis\b/g;   全局匹配例002.js:使用构造函数:例003.js:修饰符:g i mg : global 全文搜索,不添加,搜索到第一个匹配停止i : ignore case 忽略大小写,默认大小写敏感m : multiple lines 多行搜索var testString = 'He is a boy. Is he?';console.log(testString.replace(/\bis\b/g,'0'));   //He 0 a boy. Is he?console.log(testString.replace(/\bis\b/gi,'0'));   //He 0 a boy. 0 he?
例004.js:元字符: 两种类型:原义文本字符、元字符元字符:是在正则中有特殊含义的非字母字符如:* + ? $ ^ . | \ () {} []var testString = 'a1b2c3d4';console.log(testString.replace(/[abc]/g,'x'));   //x1x2x3d4
例005.js :字符类取反使用元字符^创建  反向类/负向类var testString = 'a1b2c3d4';console.log(testString.replace(/[^abc]/g,'x'));   //axbxcxxx
例006.js : 范围类 [a-z] [A-Z] [0-9]var testString = '-a1b2c3d4xxz9AA-';console.log(testString.replace(/[a-zA-Z-]/g,'Q'));   //Q1Q2Q3Q4QQQ9
例.js :预定义类.   除了回车和换行符外的所有字符\d  数字字符\D  非数字字符\s  空白符\S  非空白符\w  单词字符(字母、数字、下划线)\W  非单词字符例007.js 边界^   以XX开始$   以XX结束\b  边界\B  非边界例008.js  量词   匹配出现20次数字的字符串?     出现零次或一次+     出现一次或多次*     出现零次或多次{n}   出现n次{n,m} 出现n到m次{n,}  至少出现n次例:\d{20}\w\d?\w+\d*\d{3}\w{3,5}\d{3,}例009.js   贪婪模式 与 非贪婪模式var testString = '12345678';console.log(testString.replace(/\d{3,6}/g,'X'));   //X78   贪婪模式console.log(testString.replace(/\d{3,6}?/g,'X'));   //XX78   非贪婪模式
例010.js 分组使用()可以达到分组的功能,使量词作用于分组  例:(Byron){3}var testString = '1a23s4c5b678';console.log(testString.replace(/[a-z]\d{3}/g,'X'));   //1a23s4c5X   贪婪模式console.log(testString.replace(/([a-z]\d){3}/g,'X'));   //1a23X78   非贪婪模式
例011.js 或  使用|可以达到效果var testString = 'ByronCasper_ByrCasper';console.log(testString.replace(/Byron|Casper/g,'X'));   //XX_ByrXconsole.log(testString.replace(/Byr(on|Ca)sper/g,'X'));   //ByronCasper_X
例012.js  反向引用 $1 $2 $3分组:(byron).(ok)忽略分组:只要在分组内加上?: 就可以  (?: byron).(ok)var testString = '2018-03-18';console.log(testString.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$1'));   //2018console.log(testString.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2'));   //03console.log(testString.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$3'));   //18console.log(testString.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$1/$2/$3'));   //2018/03/18
例013.js  前瞻 (断言)正向前瞻: exp(?=assert)负向前瞻: exp(?!assert)var testString = 'a2*34vv';console.log(testString.replace(/\w(?=\d)/g,'X'));   //X2*X4vvconsole.log(testString.replace(/\w(?=\d)/g,'X'));   //X2*X4vvconsole.log(testString.replace(/\w(?!\d)/g,'X'));   //aX*3XXX
例014.js  对象属性global : 是否全文搜索,默认falseignore case : 是否大小写敏感,默认是falsemultiline : 多行搜索,默认值是false例015.js test和exec方法:reg.test();     //返回true或false
      因为lastIndex的影响,会导致全局搜索时循环reg.exec(str);  //返回数组
例016.js,017.js 字符串对象方法:string.serch(reg);    返回第一个匹配结果的index,查不到返回-1;不支持全局搜索console.log('a1b2c3d4'.search(/[a-z]/g));   //0console.log('a1b2c3d4'.search(/[A-Z]/g));   //-1
    string.match(reg);    返回null或数组console.log('a1b2c3d4'.match(/\d(\w)\d/g)); //[ '1b2', '3d4' ]
    string.split(reg);    返回数组:把一个字符串分割成字符串数组console.log('a1b2c53d4'.split(/\d/g));    //[ 'a', 'b', 'c', '', 'd', '' ]string.replace('1',2);  017.js替换一个与正则表达式匹配的子串console.log('a1b1c1'.replace('1',2));    //a2b1c1console.log('a1b1c1'.replace(/1/g,2));    //a2b2c2//replace() function参数含义:// 1、匹配字符串// 2、正则表达式分组内容,没有分组则没有改参数// 3、每个匹配结果的位置// 4、原字符串var res = 'a1b2c3d4e5'.replace(/\d/g,function(match,index,origin){console.log(index);   //1 3 5 7 9// console.log(match);     //1 2 3 4 5return parseInt(match)+1;});console.log(res);   //a2b3c4d5e6

转载于:https://www.cnblogs.com/LChenglong/p/8610513.html

对正则表达式又重新学了一遍,笔记方便以后查阅相关推荐

  1. 跳出圈子易,再入围城难,重新学编程,且学且珍惜

    大学毕业后,去了家小制造企业做WMS. 一年后离职,做了公务员. 办公室,喝茶,看报,写写稿子,日子一天天混过. 猛然间发现,身边的朋友,都是居家过日子,混一天少两晌,自己也渐渐迷失了方向. 闲暇时间 ...

  2. 重拾CCNA,学习笔记持续更新ing......(4)

    重拾CCNA,学习笔记持续更新ing......(4) 路由器作用功能的经典解说(笑)(非原创) 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大 ...

  3. js正则贪婪模式_JavaScript正则表达式迷你书之贪婪模式-学习笔记

    这篇文章主要介绍了JavaScript正则表达式迷你书之贪婪模式-学习笔记,需要的朋友可以参考下 贪婪模式: 在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如: ...

  4. cmd正则表达式批量重命名

    有时候我们Render或者Cache时候,创建的文件名不是我们想要的,需要批量修改的时候 打开DOS命令窗口,修改盘符 转到需要重命名的文件所在的路径 ren/rename 命令正则表达式改名 当然此 ...

  5. 视频PS神器!人物隐身、水印去除,简直像重拍了一遍,包含开源代码

    转自:https://github.com/nbei/Deep-Flow-Guided-Video-Inpainting 开源代码:https://github.com/nbei/Deep-Flow- ...

  6. 重新学.Net[二]——从编译到运行

    一个托管的程序,从书写代码到编译到最后运行,到底是怎么一个过程,一直有些混沌,好好看了下书,梳理了一下. 托管的程序是二次编译的,因此一个托管程序从第一次编译到最后的运行可以根据这两次编译的目的性不同 ...

  7. 重新学.Net[四]——效率和安全

    用.Net就不得不考虑效率问题(这点和Java一样),到底有没有这种性能问题?性能问题有多大?而微软一直声称托管程序是安全的,这种安全性到底是指的什么东西?达到这种安全到底付出了什么东西?我一直对这些 ...

  8. 重新学.Net[一]——.Net的组成

    .Net是一个广义的名词.它是一个平台或说是战略.在.Net诞生之初,微软在其一系列产品中都冠以.Net的标签.这也给很多人带来疑惑和不解,到底.Net中具体包含什么?这个问题不仅是我有,我想,甚至微 ...

  9. 重新学javaweb---JSP乱码 图解

    若看不清,在新页面中打开就可以了 下面加一个get/Post请求乱码解决(post一句话就可以解决,但用和get相同的方式处理也可以)

最新文章

  1. NP-Hard问题及组合最优化问题
  2. 1.6 去除字符串中的空格(trim())
  3. Druid配置文件demo
  4. Cobertura和Maven:集成和单元测试的代码覆盖率
  5. win7怎么把计算机放到桌面6,win7系统如何设置更改桌面图标?
  6. 五月数据库技术通讯丨Oracle 12c因新特性引发异常Library Cache Lock等待
  7. (转)版本管理工具介绍——SVN篇(二)
  8. [C++] STL标准模板库
  9. iOS关于通知传值Bool类型的注意点
  10. 【自学笔记】三维copula的构建与分布函数的求解
  11. Java 多线程 面试题
  12. 3月9日 笔记:RANSAC随机样本一致性,灭点、对极几何计算、H矩阵、PNP估计相机位置,3D匹配、投影变换、N点定位求解姿态
  13. 基于深度学习的3D pose estimation总结(包括几篇2D pose estimation)
  14. linux备份压缩tgz,linux关于解压和压缩命令 zip rar tar.gz tgz
  15. ESB项目培训样例说明
  16. Eclipse中文语言包安装和设置中文Doc
  17. 效法羲和驭天马,志在长空牧群星
  18. 基于Python的时间序列异常值检测
  19. DB2 9 独霸开辟(733 磨练)认证指南,第 9 部门: 用户定义的例程(6)
  20. 沙盘演练工作坊-产品开发_快速演练-Java-起源

热门文章

  1. [NOIP2012提高组] CODEVS 1200 同余方程(扩展欧几里德算法)
  2. python类似微信未读信息图片脚本
  3. Apache SolrCloud安装
  4. 02024_自定义异常的练习
  5. 51nod 1631 小鲨鱼在51nod小学
  6. iOS : 静态库(.framework)合并
  7. C#后台调用前台js(RegisterStartupScript)
  8. ARCGIS RUNTIME FOR IOS总结(三)
  9. PB调用.NET类库详解
  10. ES6新语法--对象成员简写、对象展开、数组展开