美文网首页
match 、search、replace、exec、test

match 、search、replace、exec、test

作者: YoungEvita | 来源:发表于2019-11-11 13:57 被阅读0次

    前言

    1. 正则表达式
    ① 第一种定义(构造函数) 例:var reg = new RegExp("abc", "g");
    ② 第二种定义(文本定义)字面量 :/pattern/atrribute 例:var reg = /abc/g;
    2. 从方法隶属对象上分类

    RegExp String
    match() test()
    search() exec()
    replace()
    split()

    3. String对象的方法

    方法 定义 输入参数 返回值
    stringObject.match(searchValue/regexp) 字符串内检索指定的值,或找到一个或多个正则表达式的匹配 检索的字符串值或正则表达式 匹配结果的数组
    stringObject.search(searchValue/regexp) 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串 检索的字符串值或正则表达式 第一个与参数相匹配的子串的起始位置,如果没有则返回-1
    stringObject.replace(regexp/substr, replacement) 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串 被替换的子字符串或者要匹配的正则表达式 新的字符串
    stringObject.split(separator, howmany) 用于把一个字符串分割成字符串数组 separator - 字符串或正则表达式
    howmany(可选)- 指定返回数组的最大长度
    一个字符串数组

    4. RegExp对象的方法

    方法 定义 输入参数 返回值
    RegExpObject.test(string) 用于检测一个字符串是否匹配某个模式 要检索的字符串 true/false
    RegExpObject.exec(string) 用于检索字符串中的正则表达式的匹配 要检索的字符串 返回存放匹配结果的数组,找不到匹配,返回null

    示例

    1、String 对象的方法示例

    ① match()
        // 参数为字符串
        var str = 'Hello world!';
        console.log(str.match('world'));
    
        // 参数为正则表达式
        var text = 'cat hat';
        var pattern = /.at/gi;
        console.log(text.match(pattern));
    
    输出结果
    ②search()
        // 参数为字符串
        var str = 'Hello world!';
        console.log(str.search('world')); // 6
        console.log(str.search('halo')); // -1
        // 参数为正则表达式
        var text = 'cat hat';
        var pattern = /.at/gi;
        console.log(text.search(pattern)); // 0
    

    search() 方法始终是从字符串开头向后查找模式。

    ③ replace()
        // 参数为字符串
        var str = 'Hello world!';
        console.log(str.replace('world', 'Hello')); // Hello Hello!
        // 参数为正则表达式
        var text = 'cat hat';
        var pattern = /.at/gi;
        console.log(text.replace(pattern, 'Hello world')); // Hello world Hello world
    
    ④ split()
        // 参数为字符串
        var str = 'cat, fish, monkey';
        console.log(str.split(',')); // ["cat", " fish", " monkey"]
        // 参数为正则表达式
        var text = 'cat hat';
        var pattern = /\s/gi;
        console.log(text.split(pattern)); // ["cat", "hat"]
    
    2、RegExp对象的方法示例
    ① test()
        var str = 'cat';
        var reg = /.at/gi; // 或者 var reg = new RegExp('.at', 'gi');
        console.log(reg.test(str)); // true
        console.log(reg.test(str)); // false
        console.log(reg.test(str)); // true
    

    第一次进行匹配时,匹配到了‘cat’,所以返回true;当进行第二轮匹配时,会从上次匹配的位置继续往下匹配,所以返回false,第三次匹配时,回到了开始位置进行匹配,所以返回true。

    ② exec()
        var text = 'mom and dad and baby';
        var pattern = /mom( and dad( and baby)?)?/gi;
        var matches = pattern.exec(text);
        console.log(matches);
    
    输出结果
    • 如果在模式中设置了全局标志(g),每次也只是返回一个匹配项。
    • 在不设置全局标志的情况下,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息。
    • 在设置全局标志的情况下,在同一个字符串上多次调用exec()则会在字符串中继续查找新匹配项。
    
        var text = 'cat, bat, sat, fat';
        var reg = /.at/;
    
        var matches = reg.exec(text);
    
        console.log(matches.index); // 0
        console.log(matches[0]); // cat
        console.log(reg.lastIndex); // 0
    
        matches = reg.exec(text);
    
        console.log(matches.index); // 0
        console.log(matches[0]); // cat
        console.log(reg.lastIndex); // 0
    
        var reg2 = /.at/g;
    
        matches  = reg2.exec(text);
    
        console.log(matches.index); // 0
        console.log(matches[0]); // cat
        console.log(reg2.lastIndex); // 3
    
        matches  = reg2.exec(text);
    
        console.log(matches.index); // 5
        console.log(matches[0]); //bat
        console.log(reg2.lastIndex); // 8
    

    参考

    正则中test、exec、match的简单区别,以及括号的用法

    相关文章

      网友评论

          本文标题:match 、search、replace、exec、test

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