如发现博文存在问题,可以随时滴滴我

初学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 + '\t' + reg3.lastIndex);        // "1 0"    非全局调用lastIndex不生效

var ret = ts.match(reg4);
        
console.log(ret);                                           // ["1a2","3c4"]
        
console.log(ret.index + '\t' + 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'
                                
    });

     

 

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

 

 

 

 

 

 

posted @ 2019-08-30 10:15  webxue  阅读(102)  评论(0编辑  收藏  举报