正则浅学
来源:互联网 发布:淘宝服装照片拍摄方法 编辑:程序博客网 时间:2024/05/17 09:35
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>正则表达式小结</title></head><body><script> //两种方法实例化regexp对象 // 1、字面量 // 2、构造函数// 1、字面量var regb = /\bis\b/var regbg = /\bis\b/g; //\b表示单词边界、g全局匹配、i忽略大小写var regbgi = /\bis\b/gi; //i忽略大小写var string1 = "He is a boy.This is a dog.Where is she?"var string2 = "He is a boy.Is he?"console.log(string1.replace(regb,"X"));console.log(string1.replace(regbg,"X"));console.log(string2.replace(regbgi,"X"));// 2、构造函数var regg = new RegExp("\\bis\\b");var reggg = new RegExp("\\bis\\b","g");var string3 = "He is a boy.This is a dog.Where is she?"console.log(string3.replace(regg,"X"));console.log(string3.replace(reggg,"X"));//3、元字符// --原义文本字符 \b// --元字符 *+?$^./\(){}[] //4、字符类 ---通过元字符[]构建一个简单的类匹配某一类字符(并不是匹配某一个)console.log("a1b2c3d4".replace(/[abc]/g,"X"));//取反--使用元字符^创建反向类console.log("a1b2c3d4".replace(/[^abc]/g,"X"));//5、范围类//可以使用[a-z]来匹配从a到z的任意字符console.log("a1b2c3x4z9".replace(/[a-z]/g,"Q"));console.log("a1b2c3x4z9AFSDF".replace(/[a-zA-Z]/g,"Q"));console.log("2017-03-21".replace(/[0-9]/g,"Q"));console.log("2017-03-21".replace(/[0-9-]/g,"Q"));//预定义类 匹配常见的字符类// . [^\r\n] 除了回车符和换行符之外的所有字符// \d [0-9] 数字字符// \D 非数字字符 大写的都表示取反// ab\d.//边界 \b \B// ^ 在[]以内的时候,表示取反;不在[]以内表示 以xxx开始;$表示以xxx结束console.log("@123@abc@".replace(/@./g,"Q"));console.log("@123@abc@".replace(/^@./g,"Q"));console.log("@123@abc@".replace(/.@/g,"Q"));console.log("@123@abc@".replace(/.@$/g,"Q"));//m多行匹配var mulSrt = "@123\t@456\t@789"; // \b在这里给字符串换行了console.log(mulSrt.replace(/^@\d/g,"X"));console.log(mulSrt.replace(/^@\d/gm,"X")); //m//量词// ? 0/1次// + 1/n次// * 0/n次// {n} n次// {n,m} n~m次// {n,} n~至少//贪婪模式&非贪婪模式console.log("12345678".replace(/\d{3,6}/g,"Q"));//默认的贪婪模式console.log("12345678".replace(/\d{3,6}?/g,"Q")); //贪婪模式。在量词后加上?;让正则表达式尽可能少的匹配。一旦成功匹配就不再尝试//分组----()console.log("a1b2c3d4".replace(/[a-z]\d{3}/g,"X"));console.log("a1b2c3d4".replace(/([a-z]\d){3}/g,"X"));//或//反向引用console.log("2017-03-21".replace(/\d{4}-\d{2}-\d{2}/g,"$1"));console.log("2017-03-21".replace(/(\d{4})-(\d{2})-(\d{2})/g,"$2/$3/$1")); //分组捕获,相当于提取变量console.log("Hello-World".replace(/(\w{5})-(\w{5})/g,"$2-$1"));//忽略分组console.log("2017-03-21".replace(/(?:\d{4})-(\d{2})-(\d{2})/g,"$2/$3/$1")); //忽略分组。在分组内加上?:即可。年份忽略分组之后,月份变为$1,日为$2,所以应该写为console.log("2017-03-21".replace(/(?:\d{4})-(\d{2})-(\d{2})/g,"$1/$2/$3"));//前瞻--正则表达式从文本头部向尾部开始解析,文本尾部方向,称为“前”//在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾则方向相反 js不支持后顾console.log("a2*3".replace(/\w(?=\d)/g,"X"));console.log("a2*34v8".replace(/\w(?=\d)/g,"X"));//js对象属性//test RegExp.prototype.test(string); 用来测试var reg1 = /\w/;var reg2 = /\w/g;while(reg2.test("ab")){ console.log(reg2.lastIndex); //1 2 lastIndex:当前【匹配结果】的【最后一个字符】的【下一个】字符;}//exec() RegExp.prototype.exec(string)//String.protatype.search(reg)//String.protatype.match(reg) 除了常规的数组元素之外,返回的数组还有两个对象元素。//index声明匹配文本的起始字符;//input 声明对stringObject的引用;var reg3 = /\d(\w)\d/;var reg4 = /\d(\w)\d/g;var ts = "#1a2b3c4d5e";var ret = ts.match(reg3);console.log(ret);console.log(ret.index + "\t" +reg3.lastIndex);var ret1 = ts.match(reg4);console.log(ret1);console.log(ret1.index + "\t" +reg4.lastIndex);//String.protatype.split(reg)//String.protatype.replace(str,replaceString)//String.protatype.replace(reg,replaceString)//String.protatype.replace(reg,function)//function 会在每次匹配替换的时候调用,包含四个参数:1、匹配字符串;2、正则表达式分组内容,没有分组就没有参数;3、匹配项在字符串中的index;4、原字符串"a1b2c3d4e5".replace(/\d/g,function(match,index,origin){ // console.log(match); console.log(index); return parseInt(match)+1;})"a1b2c3d4e5".replace(/(\d)(\w)(\d)/g,function(match,group1,group2,group3,index,origin){ console.log(match); return group1 + group3;})</script></body></html>
阅读全文
0 0
- 正则浅学
- 正则表达式 浅学
- 浅学正则表达式
- Quartz浅学
- 浅学javascript
- 浅学Hibernate
- jQuery 浅学
- 浅学-MVC
- WindowsService 浅学
- 浅学python
- keras浅学
- Nginx浅学
- MySQL浅学
- 浅学CMake
- 浅学CMake
- 浅学spring
- 浅学struts
- 浅学Linux
- 1012数字分类(模拟)
- metasploit获取shell之后进一步利用!metasploit+sessions
- Unity 贪吃蛇2D简易制作(一)
- C语言中同步和异步的理解
- Android大坑合集
- 正则浅学
- 详解HTTPS加速原理
- Android中ImageView的点击变暗效果
- 日常笔记之makefile中的ifeq ifdef
- C语言问题,在位运算中,操作数每右移一位,其结果相当于什么?若左移1位,其结果相当于什么?
- Linux 服务端大并发-初步
- vi命令显示行号
- python设计模式之命名模式
- Spring注解@Resource和@Autowired区别对比