String对象的match方法

RegExp对象的exec方法和String对象的match方法用法十分相似。

定义与语法
【定义】

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

【语法】

stringObject.match(searchvalue)
stringObject.match(regexp)
【返回值】存放匹配结果的数组。

以下分3种情况讲解:

1)输入参数为普通字符串;

2)输入参数为非全局正则表达式;

3)输入参数为全部正则表达式。

输入为普通字符串
var str=“web2.0 .net2.0”;
var searchValue=“e”;
console.log(str.match(searchValue));
结果如下:

第一项:匹配到的字符串;

属性index:匹配字符串所在的位置;

属性input:输入的字符串

其实,在输入参数为普通字符串时,match方法与indexOf方法的作用类似,只是indexOf返回的是匹配字符串所在的位置,match返回的是匹配的字符串(可以通过index属性获得位置)。但如果只是要获得匹配的字符串就没有意义了,因为结果就是输入参数,所以一般match更多地用于在字符串中匹配模式。

输入为非全局RegExp对象
var str=“web2.0 .net2.0”;
var pattern=/(\w+)(\d).(\d)/;//没有全局标志g
console.log(str.match(pattern));
结果如下:

发现结果与exec方法的结果完全相同。即:

第一项:web2.0,与整个模式匹配的结果,也就是与/(\w+)(\d).(\d)/匹配的结果;

第二项:web,与第一个匹配组匹配的结果,也就是与(\w+)匹配的结果;

第三项:2,与第二个匹配组匹配的结果,也就是与(\d)匹配的结果;

第四项:0,与第三个匹配组匹配的结果,也就是与(\d)(第二个(\d))匹配的结果;

属性一:index:0,匹配项在字符串中的位置,也就是数组第一项的匹配字符串的位置。

属性二:input:“web2.0 .net2.0”,也就是输入参数str。

所以,当输入参数为非全局正则表达式时,match方法与exec方法结果一样,均为第一个匹配项的信息(包括捕获组匹配到的子字符串)。

输入为全局RegExp对象
var str=“web2.0 .net2.0”;
var pattern=/(\w+)(\d).(\d)/g;//有全局标志g
console.log(str.match(pattern));
结果如下:

可以发现,结果包含两项,分别为第一个匹配项和第二个匹配项,不包括捕获组的匹配结果,也没有index和input属性。

总结
1)match方法为String对象的方法,输入参数可以为普通字符串或RegExp对象;

2)输入为普通字符串时,结果为一个数组,包含第一个匹配到的字符串;数组有两个属性,分别为匹配字符串的位置index和输入参数input;

3)输入为非全局RegExp对象时,结果为一个数组,包含第一个匹配项的信息,格式为[与整个模式匹配的字符串,与第一个捕获组匹配的字符串,与第二个捕获组匹配的字符串,……],数组有两个属性,分别为匹配得到的字符串的位置index和输入参数字符串input;

4)输入为全局RegExp对象时,结果为一个数组,包含所有匹配的结果,但不包含捕获组匹配的子字符串、index属性和input属性。

exec()和match()异同
1)exec()为RegExp对象的方法,输入参数为字符串;match()为String对象的方法,输入参数为字符串或者RegExp对象;

2)当RegExp对象没有全局标志g时,exec()和match()方法返回结果相同,为一个包含第一个匹配项的信息的数组,格式为[与整个模式匹配的字符串,与第一个捕获组匹配的字符串,与第二个捕获组匹配的字符串,……],数组有两个属性,分别为匹配得到的字符串的位置index和输入参数字符串input;

3)当RegExp对象有全局标志g时,exec()方法每次执行时是从上次检索的终点开始检索,返回当前检索到的一个匹配项信息;match()方法执行的结果为一个包含所有匹配项的数组,不包括捕获组匹配的子字符串、index属性和input属性。

String对象的match方法相关推荐

  1. java正则表达式参数替换,正则表达式替换(String对象的replace)方法笔记

    String对象的replace方法 参数 relpace( [ reg | string ], [ string | function ] ) 第一个参数表示执行匹配的正则表达式,也可以传递字符串 ...

  2. Java使用String对象的split()方法分割字符串的小坑

    Java中,按某个字符分割字符串使用的是String对象的split()方法,返回的是分割之后的String数组,值得注意的是分割符.当分割符是 . 或者是 | 时,必须使用 \ 进行转义. 没有加转 ...

  3. Java中String对象的replaceAll方法调用性能优化小技巧

    Java中String对象的replaceAll方法调用性能优化小技巧 0x01 Java中String对象的replaceAll方法调用性能优化小技巧 1.1 What? 1.2 Why? 1.3 ...

  4. String对象的indexOf方法

    stringObject.indexOf(searchvalue,fromindex) 第一个参数表示要查找的字符串的值,是必须填的. 第二个参数表示从母串的哪一位开始查找.默认从0号开始(字符串以0 ...

  5. 深入javascript中的exec与match方法

    视频课堂https://edu.csdn.net/course/play/7621 经典面试题,如果知晓一下题目的答案,那就没有必要往下看了. var someText="web2.0 .n ...

  6. python中match方法返回字符串的长度_Python re模块与正则表达式详解

    Python 中使用re模块处理正则表达式,正则表达式主要用来处理文本中的查找,匹配,替换,分割等问题:我们先来看一个问题,切入正则表达式. 问题: 匹配字符串,最少以3个数字开头.使用Python代 ...

  7. html5 字符串对象,JavaScript核心对象-String对象

    字符串是JavaScript中最常使用的一个对象,几乎每一个程序都会使用到字符串.与其它基本数据类型一样,字符串也有两种形式:基本数据类型形式和对象形式.JavaScript会根据需要在这两种形式之间 ...

  8. Js中String对象

    Js中String对象 String全局对象是一个用于字符串或一个字符序列的构造函数. 描述 创建一个字符串可以通过字面量的方式,通过字面量创建的字符串变量在调用方法的时候能够自动转化为临时的包装对象 ...

  9. js内置对象——String对象

    String对象 String对象用于处理文本(字符串) 创建String对象的语法: new Sting("abcde"); 创建原始类型字符串变量: var name1 = & ...

  10. 关于Java String对象创建问题解惑

    先看看下面的代码     public String makinStrings()     {         String s = "Fred";         s = s + ...

最新文章

  1. html流式布局怎么用,css 流式布局什么意思?
  2. Linux上安装php
  3. 在weka中配置自己的算法 zz
  4. android studio设置Tab为四空格缩进
  5. mysql gui vim_vim(一): 小技巧
  6. 3DS_MAX渲染笔记
  7. 今天看到了和我男朋友不一样的程序员!好帅哦!
  8. Neotoma数据库学习第二天
  9. 机器人编程按时巡线_一种智能巡线机器人以及控制方法与流程
  10. linux 压缩文件 zip,linux zip命令压缩zip文件详解
  11. CAJ格式文献转成PDF格式
  12. ActiveMQ 反序列化漏洞 (CVE-2015-5254) 漏洞复现
  13. 深度学习:使用pytorch训练cifar10数据集(基于Lenet网络)
  14. 动画效果--animation
  15. Oracle SQL group by-报错:不是单组分组函数
  16. 异常:java.lang.LinkageError: loader constraint violation: when resolving interface method “javax.servl
  17. NavigationView使用详解
  18. 05 TypeScript 类的使用
  19. My Life, Rated!
  20. 【Java Se】常用工具类之多线程

热门文章

  1. NXP JN5169 USB Dongle 原理图
  2. 基本DOS命令——文件操作
  3. 十大淘宝搜索作弊行为
  4. 丁昊 北大计算机,北大清华17人!2018自主招生等类型入选名单公示,苏州333人!...
  5. 如何安装Win10/Ubuntu双系统
  6. 数据仓库建设之总线矩阵/总线架构
  7. linux df -hl 数据解释,linux磁盘空间查看命令(du,df)剩余空间查看详解
  8. 最直白的编译原理-基础知识(清华-王书3版)
  9. Django笔记09:一招解决使用regroup模板标签出现的重复分组问题
  10. 泰凌微8258入门教程 环境篇②——Telink IDE开发环境搭建