match 、search、replace、exec、test

前言

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

String RegExp
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));
输出结果

match参数的正则表达式如果是全局的这会返回所有匹配的数组

②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, 此时lastIndex会改变;当进行第二轮匹配时,会从上次匹配的位置继续往下匹配,所以返回false,此时lastIndex会置为0,第三次匹配时,回到了开始位置进行匹配,所以返回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的简单区别,以及括号的用法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 4,781评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,461评论 0 4
  • 前言 对于正则,著称火星文字,见名知意主要它晦涩难懂,一直以来,看到它总是怕怕的,在平时,也只是简单的用用,其主要...
    itclanCoder阅读 4,208评论 0 2
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,124评论 0 3
  • 自从年前得空写了两篇文章之后就开始忙了,这一忙就是2个月😭。当时信誓旦旦说的定期写篇博客的计划也就泡汤了🤣,不过好...
    景科同学阅读 4,865评论 0 9