• 初学JavaScript正则表达式(十三)


    字符串方法


    search(reg)

    1. search()用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串

    2. 方法返回第一个匹配结果index,查找不到返回-1

    3. search()不执行全局匹配,他将忽略标志g,并且总是从字符串的开始进行检索

    例:
        a1b1c1d1.search('1')        // 1
    
        a1b1c1d1.search(1)          // 1
    
        a1b1c1d1.search('10')       // -1

    match(reg)

    1. match()将检索字符串,以找到一个或多个与RegExp相匹配的文本
    2. RegExp是否具有标志g对结果影响很大

    非全局调用 

    1. 如果RegExp没有标志g,那么match()方法就只能在字符串中执行一次匹配
    2. 如果没有找到任何匹配的文本,将返回null

    3. 否则它将返回一个数组,其中存放了与它找到的匹配文本有关的信息

                    返回数组的第一个元素是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本

                    除了常规的数组元素之外,返回的数组还含有两个对象属性

                           'index'声明匹配的文本的起始字符在字符串中的位置

                           'input'声明对'stringObject'的引用

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------

    全局调用

    如果RegExp具有标志g,那么match()方法将执行全局检索,找到字符串中的所有匹配的子字符串

           没有找到任何匹配的子串,则返回null

                  如果找到了一个或多个匹配子串,则返回一个数组

    数组元素中存放的是字符串中所有的匹配子串,而且也没有index属性或input属性

    var reg3 = /d(w)d/;
    
    var reg4 = /d(w)d/g;
    
    var ts = '$1a2b3c4d5e';
    
    var ret = ts.match(reg3);
            
    console.log(ret);                                           // ["1a2","a"]
            
    console.log(ret.index + '	' + reg3.lastIndex);        // "1 0"    非全局调用lastIndex不生效
    
    var ret = ts.match(reg4);
            
    console.log(ret);                                           // ["1a2","3c4"]
            
    console.log(ret.index + '	' + reg4.lastIndex);             // "undefined 0"

    split()

    1. 我们经常用split方法把字符串分割为字符数组 'abcd'.split(',')// ["a","b","c","d"]

    2. 在一些复杂的分割情况下我们可以使用正则表达式解决'a1b2c3d'.split(/d/); // ["a","b","c","d"]

    String.prototype.replace

    1. String.prototype.replace(str,replaceStr)

      例:
          "a1b".replace('1',2)
                          
          "a2b"
    2. String.prototype.replace(reg,replaceStr)

      例:
          "a1b1c1".replace(/1/,2)
                          
          "a2b1c1"
                          
      例:"a1b1c1".replace(/1/g,2)
                         
          "a2b2c2"
    3. String.prototype.replace(reg,function)
       

      function会在每次匹配替换的时候调用,有四个参数
                          
      1、匹配字符串
                      
      2、正则表达式分组内容,没有分组则没有该参数</li>
                          
      3、匹配项在该字符串中的index</li>
                          
      4、原字符串</li>

      例:'a1b2c3d4e5' --------  'a2b3c4d5e6'
                                                    
      'a1b2c3d4e5'.replace(/d/g,function(match,index,origin){
                                      
              console.log(index);                   // 1   3    5   7  9
                                      
              return parenInt(match) + 1;             // 'a2b3c4d5e6'
                                  
      });
                          
      例:'a1b2c3d4e5' --------   'a12c34e5'
                        
      'a1b2c3d4e5'.replace(/(d)(w)(d)/g,function(match,group1,group2,group3,index,origin){
                                      
          console.log(match);                     // "1b2"   "3d4"
                                      
          return group1 + group3;                 // 'a12c34e5'
                                  
      });

    整理自慕课网教学 点此进入

  • 相关阅读:
    了解HTTP Header之User-Agent和HTTP协议的响应码
    怎样才算一个优秀的管理者
    ldpi、mdpi、hdpi、xhdpi、xxhdpi (无内容,待填)
    手把手教做小偷采集
    java中碰到无法解决的问题:无法访问类的getter访问器
    简单的加密解密处理
    Java中处理二进制移位
    Java中实现String.padLeft和String.padRight
    这短短几行代码价值一万
    从一篇文章中检查特定单词出现数量和第一次出现位置
  • 原文地址:https://www.cnblogs.com/xue-shuai/p/12000613.html
Copyright © 2020-2023  润新知