美文网首页我爱编程
07-JS基础-正则表达式

07-JS基础-正则表达式

作者: xiaohan_zhang | 来源:发表于2018-05-22 17:33 被阅读0次
    正则表达式

    正则用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则,也可以将一个字符串中符合规则的内容提取出来。

    • 创建正则表达式
    var reg = new RegExp("正则");
    var reg = new RegExp("正则", "匹配模式");
    var reg = /正则表达式/
    var reg = /正则表达式/匹配模式
    

    匹配模式:
    g: 表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止;
    i : 表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
    m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

    • 方法:
      test()
      - 可以用来检查一个字符串是否符合正则表达式
      - 如果符合返回true,否则返回false
    var reg = new RegExp("a");
    // 字符串str中是否含有'a',严格区分大小写
    var result = reg.test("abc"); // true
    result = reg.test("hAC"); // false
    
    //i - ignoreCase 忽略大小写
    var reg2 = new RegExp("a", "i");
    result = reg2.test("hAC"); // true
    var reg3 = /a/i;
    console.log(reg3.test("hAC")); // true
    

    设置匹配模式时,可以都不设置,也可以设置1个,也可以全设置,设置时没有顺序要求。

    • () [] {} 的区别
      () 的作用是提取匹配的字符串。
      [] 是定义匹配的字符范围。比如 [0-9] 表示匹配任意数字。
      {} 一般用来表示匹配的长度,比如 \d{3} 表示匹配三个数字,\d{1,3} 表示匹配1~3个数字,\d{3,} 表示匹配3个以上数字。

    • ^ 与 $
      ^ 匹配一个字符串的开头,比如 (^a) 就是匹配以字母a开头的字符串。
      $ 匹配一个字符串的结尾,比如 (b$) 就是匹配以字母b结尾的字符串。
      ^ 还有另个一个作用就是取反,比如[^xyz] 表示匹配的字符串不包含xyz。
      注意:如果 ^ 出现在[ ] 中一般表示取反,而出现在其他地方则是匹配字符串的开头。

    • \d \s \w .
      \d 匹配一个非负整数, 等价于 [0-9]
      \s 匹配一个空白字符
      \w 匹配一个英文字母或数字,等价于[0-9a-zA-Z]
      . 匹配除换行符以外的任意字符,等价于[^\n]

    • ? * +
      ? 表示匹配前面元素0次或1次,相当于{0,1} ,比如(\w?) 就是匹配最多由1个字母或数字组成的字符串。
      * 表示匹配前面元素0次或多次,比如 (\s*) 就是匹配0个或多个空格。
      + 表示匹配前面元素1次或多次,比如 (\d+) 就是匹配由至少1个整数组成的字符串。

    量词
    {n} 正好n次
    {m,n} m-n次
    {m,} 至少m次
    + 至少1次 {1,}
    ? 0次或1次 {0,1}
    * 0次或多次 {0,}

    | 或
    [] 或
    \w 相当于[A-z0-9_] 数字字母下划线
    \W 相当于[^A-z0-9_] 非数字字母下划线
    \d 任意数字
    \D 除了数字
    \s 空格
    \S 除了空格
    \b 单词边界
    \B 除了单词边界

    转义字符
    \. 表示 .
    \\ 表示 \

    reg = /a|b/; // a或b
    console.log(reg.test("caa")); // true
    
    reg = /[ab]/; // a或b
    console.log(reg.test("acc")); // true
    
    reg = /[a-c]/; // a-c 任意字母
    console.log(reg.test("beer")); // true
    
    reg = /[0-9]/;
    console.log(reg.test("e45")); // true
    /*
    * [a-z]任意小写字母
    * [A-Z]任意大写字母
    * [A-z]任意字母
    * [0-9]任意数字
    * */
    
    // 除了ab
    reg = /[^ab]/;
    console.log(reg.test("abc")); // true
    console.log(reg.test("a")); // false
    console.log(reg.test("ab")); // false
    
    // 字符串是否包含"."
    var reg = /\./;
    console.log(reg.test("ererere.com")); // true
    
    • 字符串与正则相关方法
    1. split()
      将字符串拆分为数组。
    str = "qq-ff-de-we";
    var s = str.split("-"); // ["qq", "ff", "de", "we"] (4)
    
    str = "1a2b3c4d5e6f";
    var s2 = str.split(/[a-z]/); // ["1", "2", "3", "4", "5", "6", ""] (7)
    
    1. search()
      搜索字符串中是否含有指定内容。
      如果搜索到指定内容,返回第一次出现的索引;
      如果没有搜索到指定内容,则返回-1。
    str = "hello abc adc aec";
    var res = str.search("abc"); // 6
    
    res = str.search("hhh");     // -1
    
    res = str.search(/a[de]c/);  // 10
    
    1. match()
      提取字符串中符合根据正则表达式的内容,会将匹配到的结果封装到数组中返回。
      默认情况下,找到第一个符合条件的内容就会停止匹配,可以设置为全局匹配模式,这样可以匹配到所有内容。
      可以为一个正则设置多个匹配模式,顺序无所谓。
    str = "1a2b3c4d5A6BC";
    var result = str.match(/[A-z]/); // ["a"]
    
    result = str.match(/[A-z]/g); // ["a", "b", "c", "d"]  
    
    result = str.match(/[a-z]/gi); // ["a", "b", "c", "d", "A", "B", "C"]
    
    1. replace()
      将字符串中指定内容替换为新内容,不影响原字符串。
      第一个参数:被替换内容
      第二个参数:新内容
    str = "1a2a3a4d5e6f7A8BC";
    result = str.replace(/a/, "o"); // 1o2a3a4d5e6f7A8BC
    result = str.replace(/a/g, ""); // 1234d5e6f7A8BC
    
    Date

    日期的对象,在JS中通过Date对象来表示时间。

    • 创建时间对象
    // 创建一个当前的时间对象
    var d = new Date();
    // 创建一个指定的时间对象
    // new Date("月/日/年 时:分:秒");
    var d2 = new Date("5/18/2018 13:13:13");
    
    • Date对象方法:
    1. getDate()
      当前日期对象是几日(1-31)
    console.log(d2.getDate()); // 18
    
    1. getDay()
      返回当前日期对象时周几(0-6),0表示周日。
    console.log(d2.getDay()); // 5
    
    1. getMonth()
      返回当前日期对象的月份(0-11)。
    console.log(d2.getMonth()); // 4
    
    1. getFullYear()
      从 Date 对象以四位数字返回年份。
    console.log(d2.getFullYear()); // 2018
    
    1. getHours()
      返回 Date 对象的小时 (0 ~ 23)。
    2. getMinutes()
      返回 Date 对象的分钟 (0 ~ 59)。
    3. getSeconds()
      返回 Date 对象的秒数 (0 ~ 59)。
    4. getMilliseconds()
      返回 Date 对象的毫秒(0 ~ 999)。
    5. getTime()
      返回当前日期对象的时间戳。
    d2.getTime(); // 1526620393000
    
    1. Date.now()
      可以获取当前代码执行时的时间戳。
    Math

    Math属于一个工具类,它不需要我们创建对象,它里边封装了属性运算相关的常量和方法。

    • Math常用方法:
    1. Math.PI
      常量,圆周率
    2. Math.abs()
      绝对值运算
    3. Math.ceil()
      向上取整
    Math.ceil(1.3); // 2
    Math.ceil(-2.4); // -2
    
    1. Math.floor()
      向下取整
    Math.floor(1.3); // 1
    Math.floor(-2.4); // -3
    
    1. Math.round()
      四舍五入取整
    2. Math.random()
      生成一个0-1之间的随机数。
    // 生成一个x-y之间的随机数
    Math.round(Math.random()*(y-x)+x);
    
    1. Math.pow(x,y)
      求x的y次幂
    2. Math.sqrt()
      对一个数进行开方
    3. Math.max()
      求多个数中最大值
    4. Math.min()
      求多个数中的最小值
    字符串的相关的方法
    1. length
      获取字符串的长度。
    2. charAt()
      根据索引获取指定的字符。
    3. charCodeAt()
      根据索引获取指定的字符编码。
    4. String.fromCharCode()
      根据字符编码获取字符。
    5. concat()
      用来连接两个字符串,不影响原字符串。
    6. indexOf()
      从一个字符串中检索指定内容,并返回第一次出现的索引,如果没有找到则返回-1。
      lastIndexOf()
      从后往前查找。
      需要一个字符串作为参数,这个字符串就是要检索的内容,如果找到该内容,则会返回其第一次出现的索引,
      可以指定第二个参数,来表示开始查找的位置。
    var str = "hello";
    console.log(str.indexOf("l")); // 2
    console.log(str.lastIndexOf("l")); // 3
    
    1. slice()
      可以从一个字符串中截取指定的内容,并将截取到内容返回,不会影响原变量。
      参数:
      第一个:截取开始的位置(包括开始)
      第二个:截取结束的位置(不包括结束)
      可以省略第二个参数,如果省略则一直截取到最后。
      可以传负数,如果是负数则从后往前数。

    2. substring()
      可以从一个字符串中截取指定的内容,并将截取到内容返回,不会影响原变量。
      它不能接受负值参数,如果设置一个负值,则会自动修正为0,如果第二个参数小于第一个,自动交换两个参数位置。

    3. substr()
      可以从一个字符串中截取指定的内容。
      参数:
      第一个:截取开始的位置(包括开始)
      第二个:截取的数量

    4. toLowerCase()
      将字符串转换为小写并返回。

    5. toUpperCase()
      将字符串转换为大写并返回。

    6. split()
      可以根据指定内容将一个字符串拆分为一个数组。
      参数:
      需要一个字符串作为参数,将会根据字符串去拆分数组。
      可以接收一个正则表达式,此时会根据正则表达式去拆分数组。

    7. match()
      可以将字符串中和正则表达式匹配的内容提取出来,并且封装到一个数组中返回。
      参数:正则表达式

    8. replace()
      可以将字符串中指定内容替换为新的内容
      参数:
      第一个:被替换的内容,可以是一个正则表达式
      第二个:替换的新内容

    9. search()
      可以根据正则表达式去字符串中查找指定的内容,并且将第一个匹配到的内容的索引返回,如果没有匹配到任何内容,则返回-1。
      参数:正则表达式

    相关文章

      网友评论

        本文标题:07-JS基础-正则表达式

        本文链接:https://www.haomeiwen.com/subject/ntwvdftx.html