zoukankan      html  css  js  c++  java
  • 千万别把js的正则表达式方法和字符串方法搞混淆了

    我们在字符串操作过程中肯定经常用了test() split() replace() match() indexof()等方法,很多人经常把用法写错了,包括我,所以今天细细的整理了下。

    test()是判断是字符串是否与正则表达式匹配,返回true | false;

    //例1 现在有个要求,判断字符串是不是数字
    var reg=/^d$/;  //匹配数字正则
    var str="123";  //一个字符串
    //是这样写呢
    reg.test(str);
    //还是这样写叱
    str.test(str);

    //例2 现在又有一个要求,替换字符串中所有的数字
    var reg=/d/g;  //匹配所有数字正则
    var str="AAAA00000BBBBB11111CCCCCC";
    //问题又来了,是这样写呢还是这样写
    reg.replace(str,"");
    str.replace(reg,"");

       同学们千万别死记硬背,容易伤身体,只要我们搞清楚了这样正则表方法就很容易掌握用法

      这些方法分为两类,一类是正则表达式方法,另一类是字符串方法

      正则表达式方法这样调用:reg.方法(字符串);

      字符串方法这样调用 :字符串.方法(reg);

      具体的分类往下看吧……

    一、正则表达式的定义
    1、var reg=//参数;
    2、var reg=new RegExp("","参数")

    二、正则表达式的常用方法,方法分两种一种正则表达式自定的方法和字符串操作方法
    1、RegExp对象方法
      1.1、test():返回字符串是否与Reg匹配。

    例:

    var reg=/d/;
    var str1="123";
    var str2="ABC";
    reg.test(str1);//true
    reg.test(str2);//false 

      1.2、exec():返回字符串中与reg首次匹配的值

    var reg=/d/;
    var str1="923ABC";
    reg.exec(str1);//9 

      1.3、compile():用于改变RegExp

    var reg=/d/;
    var str1="923";
    console.log(reg.test(str1));//true
    reg.compile("w");
    console.log(reg.test(str1));//false

    2、字符串操支持正则表达式的方法

      2.1、replace():替换reg匹配字符串

    var reg=/d/;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD
    //用--替换字符串中数字,但结果发现却只替换掉了第一个,因为reg默认匹配第个
    //那么要替换所有的数字,需要在reg后面加个全部的参数 g            
    var reg=/d/g;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD

      2.2、split():按reg匹配的值拆分成数组

    var reg=/d/;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.split(reg));//["AAA", "BBBB", "CCCC", "DDDD"]

      2.3、match():返回reg匹配的第个字符串

    var reg=/d/;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.match(reg));//"9"  返回第一个数字"9"

      2.4、search():返回reg匹配的第一个字符串的位置,没有则返回-1

    var reg=/d/;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.search(reg)); //3 返回第个数字 9的位置

    3、很多人容易把以上两个方法顺序写反。
      正则方法的调用是:reg.方法(字符串);
      字符串方法的调用:字符串.方法(reg);

    三、参数:
    g :全文查找

    var reg=/d/;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.replace(reg,"--"));//AAA--BBBBCCCCDDDD
    //用--替换字符串中数字,但结果发现却只替换掉了第一个,因为reg默认匹配第个
    //那么要替换所有的数字,需要在reg后面加个全部的参数 g            
    var reg=/d/g;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.replace(reg,"--"));//AAA--BBBB--CCCC--DDDD

    i :忽略大小写

    var reg = /a/i;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.replace(reg,"--")); // AAA9BBBB2CCCC3DDDD           
                
    var reg = /a/;
    var str1 = "AAA9BBBB2CCCC3DDDD";
    console.log(str1.replace(reg,"--")); //--AA9BBBB2CCCC3DDDD

    m:多行查找

      这个有点不好理解,多行查找和全文查找有什么区别呢。我们来举个例子看看

    //例:全文查找        替换所有的A
        var reg = /A/g;
        var str1 = "AAA9BBBB2CCCCAAAA3DDDD";
        console.log(str1.replace(reg,"-")); // ---9BBBB2CCCC----3DDDD
    //例:多行查找        
        var reg = /A/m;
        var str1 = "AAA9BBBB2CCCCAAAA3DDDD";
        console.log(str1.replace(reg,"-")); // -AA9BBBB2CCCCAAAA3DDDD
    
    //多行查找一般用于有换行的字符中
        var reg = /^A/;
        var str1 = "BBBB9BBBB2CCCC
    AAAA3DDDD";
        console.log(str1.replace(reg,"-")); 
        //BBBB9BBBB2CCCC
        //AAAA3DDDD
        //字符串里有个换行符当正则匹配第一行后就结束了,所以这里就引用了换符符的功能
        var reg = /^A/m;
        var str1 = "BBBB9BBBB2CCCC
    AAAA3DDDD";
        console.log(str1.replace(reg,"-")); 
        //BBBB9BBBB2CCCC
        //-AAA3DDDD 
    //全文查找的范围大于多行查找
  • 相关阅读:
    数据结构与算法20170804
    设计模式之抽象工厂模式20170803
    设计模式之建造者模式20170802
    设计模式之工厂方法模式20170801
    设计模式之中介者模式20170731
    设计模式之门面模式20170728
    设计模式之适配器模式20170727
    设计模式之装饰模式20170726
    AndroidStudio 开发JNI
    NDK开发: 打印C代码的调试信息Log
  • 原文地址:https://www.cnblogs.com/web369/p/javascript.html
Copyright © 2011-2022 走看看