Skip to content

Latest commit

 

History

History
97 lines (96 loc) · 4.23 KB

js正则表达式.md

File metadata and controls

97 lines (96 loc) · 4.23 KB

正则表达式

  1. 正则表达式是对字符串和特殊字符的一种逻辑公式,用来匹配字符串。
  2. 正则表达式两种创建方式 2.1. 字面量 var a = //gi; 2.2. ##RexExp构造函数 var a = new RegExp(//,"g(全局)i(忽略大小写)");
  3. 正则表达式匹配字符串 3.1. 字符串方法
   "acac".replace(//gi,"x");

3.2. 正则对象方法

    var regExp = /a/gi;//思考如果加了g,循环了若干次后是true还是false,这是为什么?test中的lastIndex
     console.log(regExp.test("ab"));//true
     console.log(regExp.test("ab"));//false 为什么?
     console.log(regExp.test("ab"));//true
     console.log(regExp.test("ab"));//false 
  1. 正则表达式相关字符 4.1. \d匹配数字。“0\d\d”可以匹配“006” 4.2. \w匹配任意字母或数字。"a\w"匹配"aa". 4.2. 匹配任意字符。"a."匹配"as","aw","ar". 4.4. +表示最少一个字符,?表示最多一个字符,*表示任意包含0个或多个。{n}表示n个字符,{n,m}n->m个字符。 4.5. \s匹配一个空格。 4.6. []表示范围,[abc]代表abc中任意一个字符。[^代表字符取反],[^abc]代表非abc中的任意一个字符. 4.7. -代表范围,[a-c3-6]。 4.8. a|b匹配a或者b。 4.9. ^表示行开头,^\d表示数字开头,$表示结束,\d$表示数字结尾。\b匹配单词边界。\B匹配非单词边界。
  2. 切分字符串
    "ab c".split("");//
    ['a','b','','','c'];
    

  "ab;; c d".split(/[\s,;]+/);// ['a','b','c','d']; ``` 6. 分组 6.1. 用()表示的就是要提取的分组(Group)

  console.log("NeeeNameName_11111".replace(/Name{3}/g,"X"));
  console.log("NameNameName_11111".replace(/(Name){3}/,"X"));
   NeeeNameName_11111
   X_11111

6.2. exec()方法提取字串## exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。 exec()方法在匹配失败时返回null. 7. #贪婪匹配 7.1. 正则表达式默认为贪婪模式,尽可能匹配多的字符。 "12345678".replace(/\d{3,6}/,'X');//默认为贪婪模式 X78 "12345678".replace(/\d{3,6}?/,'X');//设置为非贪婪模式 在量词后加?X45678 "12345678".replace(/\d{3,6}?/g,'X');//返回什么?xx78 8. 正则表达式属性 8.1. global 默认为false 8.2. ignore case 默认为false 8.3. multiline 默认为false 8.4. lastIndex 表示当前匹配内容的最后一个字符的下一个位置 8.5. sourse 正则表达式文本字符串 9. 原型方法 9.1. test方法

 var a = /\d\d/gi;
 console.log(a.test('124314a'));

9.2. exec方法
//Part222 RegExp.prototype.exec 方法 可以获得更为详细的信息,返回一个有属性的数组,属性index表示匹配到的位置 //对于非全局模式下返回第一个匹配的和所有的分组项,正则对象的lastIndex不起作用 javascript var execExp = /\d{1,2}(\d)(\d)/; var retExp = execExp.exec("12s342dsfsf233s"); console.log(retExp instanceof Array,retExp,execExp.lastIndex); //true (3) ["342", "4", "2", index: 3, input: "12s342dsfsf233s"] 0 9.3. search方法

  console.log("a1b2c3d4".search(/1/));//返回index 1
  console.log("a1b2c3d4".search(/f/));//返回index -1 没找到
  console.log("a1b2c3d4".search(/\d/g));//返回index 1 忽略全局
  console.log("a1b2c3d4".search(/\d\w/g));//返回index 1 忽略全局

9.4 .match方法 //String.prototype.match 如果匹配不到返回null 匹配到了返回数组 // 包含的信息有index 原始字符串 有没有g影响很大 javascript console.log("a1b2c3d4".match(/1/));//[ '1', index: 1, input: 'a1b2c3d4' ] console.log("a1b2c3d4".match(/f/));//null console.log("a1b2c3d4".match(/\d/));//[ '1', index: 1, input: 'a1b2c3d4' ] console.log("a1b2c3d4".match(/\d/g));//[ '1', '2', '3', '4' ] 9.5 .replace方法

 console.log("a,b,c,d".replace(",","X"));aXb,c,d
 console.log("a2b3c4d".replace(/[2-3]/,"X"));aXb3c4d
 console.log("a2b3c4d".replace(/[2-3]/g,"X"));aXbXc4d