zoukankan      html  css  js  c++  java
  • Javascript正则对象方法与字符串正则方法总结

    正则对象

    • var reg = new Regexp('abc','gi')
    • var reg = /abc/ig

    正则方法

    • test方法(测试某个字符串是否匹配)
    var str = 'abc123';
    var ismatch = /[a-z]+d+$/.test(str);
    console.log(ismatch);  //true
    
    • exec方法(捕获字符串)
    var str = 'abcd123';
    var reg = /([a-z]{1})/g; //如果没有g,每次从开头匹配
    var arr = reg.exec(str);
    while(arr){
      console.log(arr);
      arr = reg.exec(str);
    }
    
    返回结果:
    ["a", //总体匹配的字符串
     "a", //第一个分组捕获的结果
      .., //第..个分组捕获的结果
      index: 0 //当前匹配到的字符串所处位置
      input: "abcd123" //原始字符串
    ]
    
    ["b", "b", index: 1, input: "abcd123"]
    ["c", "c", index: 2, input: "abcd123"]
    ["d", "d", index: 3, input: "abcd123"]
    
    

    如果没有g,每次从头匹配,调用结果都一样,放到while会死循环。
    如果有g,每次正则对象的lastIndex前进到当前匹配末尾。

    • compile 方法(编译正则)
    var reg = /[a-z]{1}/
    var str = 'abcde123';
    reg.compile(reg); //接收一个正则参数,进行编译
    console.log(reg.test(str));
    
    

    适用于多次调用正则,提高性能。

    String对象的方法

    • seach方法(返回第一次匹配结果,修饰符g无效)
    var str = 'hello world!';
    str.search(/o/); //输出4
    
    • replace方法(正则替换字符串)
    var str = 'hello world! hello js';
    str.replace(/hello/g,'hi'); //输出:  hi world! hi js
    

    加g表示替换所有,不加g只替换第一个

    • split方法(字符串拆分为数组)
    var str = 'abc-def=ghi|jkl';
    var array = str.split(/[^a-z]{1}/);
    //输出 ["abc", "def", "ghi", "jkl"]
    
    • match方法(获取字符串)
    var str = 'abc123def456hij789';
    str.match(/(d+)/);
    // 输出["123", "123", index: 3, input: "abc123def456hij789"] 跟exec方法一致,并带额外属性
    
    var str = 'abc123def456hij789';
    str.match(/(d+)/g);
    //输出 ["123", "456", "789"]
    
    

    全局下返回所有匹配结果,非全局下与正则对象的exec方法一致

  • 相关阅读:
    MongoDB存储时间
    如何在博客园随笔中增加章节导航
    如何优雅地从CSDN转载文章
    线段树详解(原理、实现与应用)
    Codeforces 1076D——最短路算法
    顶点支配、独立与覆盖
    CodeForces
    数据结构一——顺序表
    平面图的基本概念及性质
    编程之美——一摞烙饼的排序(暴搜+剪枝)
  • 原文地址:https://www.cnblogs.com/jaychan/p/5973276.html
Copyright © 2011-2022 走看看