使用

  1. match一般都要结合RegExp的全局g属性来使用的,这样返回的结果是:匹配到的所有结果的数组;
    let str1 = "12345678";let reg1 = /\d{1,3}(\d{3})*/gconsole.log(str1.match(reg1))  // ["123456", "78"]
  1. 如果不结合g使用,则在没有分组的情况下,只会返回一个匹配结果(或者没有匹配结果时返回null);
 let str0 = "12345678";let reg0 = /\d{1,3}/console.log(str0.match(reg0)) // ['123', index: 0, input: '12345678', groups: undefined]
    这个例子的结果是没有使用全局匹配的正则表达式的匹配结果。说白了,就是正则表达式的末尾没跟g。由于不适用全局匹配,所以match()方法只找到源字符串中首次匹配的子串后,就立刻得到返回结果,不再比较之后剩余的部分是否还有能匹配上的内容。 我们可以看到,match()的结果是一个数组,该数组一共有4项。各项代表的意思如下:第0项:匹配到字符串第1项:index表示首次匹配上的子串的起始下标。第2项:input,表示源字符串第3项:groups:undefined,这表示当前的正则表达式没使用分组第4项:length,表示匹配到的结果个数,由于这里不使用全局匹配,只找到首次匹配项就结束了,所以匹配结果只有1个,length也就是1。
  1. . 如果不结合g使用,在有分组的情况下(还要没有开始(^)和结束($)符),则还会返回分组匹配到的内容,例如:
    var str = 'Today is the 286th day of 2018, the 108th Thanksgiving Day.';var results = str.match(/\d+(t)(h)/); //匹配str中首个以数字开头,并且以th结尾的子串console.log(results); // ['286th', 't', 'h', index: 13, input: 'Today is the 286th day of 2018, the 108th Thanksgiving Day.', groups: undefined]

match中$符的特性

有$则先匹配末尾,与正则的从走到右,从外到内不同

// 没有$符时,\d{1,3}会先匹配三个数字,(\d{3})*再匹配三个数字。然后\d{1,3}再匹配剩下的78let str1 = "12345678";let reg1 = /\d{1,3}(\d{3})*/gconsole.log(str1.match(reg1))  // ["123456", "78"]// 如果非全局匹配:也先匹配3个数字【此示例涉及到了match的分组,详解看下面】let str2 = "12345678";let reg2 = /\d{1,3}(\d{3})*/console.log(str2.match(reg2))// ["123456", "456", index: 0, input: "12345678", groups: undefined]// 如果有开头符号,也是先匹配3个数字let str3 = "12345678";let reg3 = /^\d{1,3}(\d{3})*/gconsole.log(str3.match(reg3)) // ["123456"]// 我们再来看看有$符时,\d{1,3}就会优先让(\d{3})*先匹配符合的数字,剩下的再由\d{1,3}匹配,这样\d{1,3}就不会先匹配了。let str4 = "12345678";let reg4 = /\d{1,3}(\d{3})*$/gconsole.log(str4.match(reg4)) // ["12345678"]// 匹配结果:["12345678"],345和678是(\d{3})*匹配到的,12是\d{1,3}匹配到的。// 如果同时有开头符^和结束符$:还是先倒着匹配,即先看 (\d{3})* 再看\d{1,3}。这就是$符的特性let str5 = "12345678";let reg5 = /^\d{1,3}(\d{3})*$/gconsole.log(str5.match(reg5)) // ["12345678"]

match的分组

正则中()中代表的是组的含义;

 // 示例1:结果中的456则是其中的第一个分组的值let str2 = "12345678";let reg2 = /\d{1,3}(\d{3})*/console.log(str2.match(reg2))// ["123456", "456", index: 0, input: "12345678", groups: undefined]
 // 示例2var str = 'Today is the 286th day of 2018, the 108th Thanksgiving Day.';var results = str.match(/\d+(t)(h)/); //匹配str中首个以数字开头,并且以th结尾的子串console.log(results); // ['286th', 't', 'h', index: 13, input: 'Today is the 286th day of 2018, the 108th Thanksgiving Day.', groups: undefined]

示例2分析:
由于该正则表达式为: /\d (t)(h) /,该表达式中使用了小括号(),在此处的作用为分组。所以match()的结果是带有分组特征的。返回的数组包含多个元素,第一个元素是以贪婪模式找到的最长的匹配,之后的元素依次为该匹配中的第一、第二、第三 …个分组匹配到的值,这里有2个分组,所以匹配到的值分别是"t" “h”。

注意:当正则表达式中有开始(^)或者结束($)符号时,则不会体现分组现象

例如:

    let str5 = "12345678";let reg5 = /^\d{1,3}(\d{3})*$/gconsole.log(str5.match(reg5)) // ["12345678"]

正则之match方法详解相关推荐

  1. python正则去掉重复单词_python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解 | 学步园...

    在pdf转为文本的时候,经常会多出空格,影响数据观感,因此需要去掉文本中多余的空格,而文本中的英文之间的正常空格需要保留,输入输出如下: input:我今天 赚了 10 个亿,老百姓very happ ...

  2. python中文字符串多余空格_python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解...

    python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解 在pdf转为文本的时候,经常会多出空格,影响数据观感,因此需要去掉文本中多余的空格,而文本中的英文之间的正常空格需要保留,输入 ...

  3. python接收邮件内容启动程序_Python实现发送与接收邮件的方法详解

    本文实例讲述了Python实现发送与接收邮件的方法.分享给大家供大家参考,具体如下: 一.发送邮件 这里实现给网易邮箱发送邮件功能: import smtplib import tkinter cla ...

  4. python语言的格式框架_django框架模板语言使用方法详解

    本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...

  5. php中读取大文件实现方法详解

    php中读取大文件实现方法详解 来源:   时间:2013-09-05 19:27:01   阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...

  6. xpath 取标签下所有文字内容_对Xpath 获取子标签下所有文本的方法详解

    对Xpath 获取子标签下所有文本的方法详解 在爬虫中遇见这种怎么办 想提取名称, 但是 名称不在一个标签里 使用xpath string()方法 例如 data.xpath("string ...

  7. PHP cURL应用实现模拟登录与采集使用方法详解

    对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...

  8. php7自定义异常处理,基于PHP7错误处理与异常处理方法(详解)

    PHP7错误处理 PHP 7 改变了大多数错误的报告方式.不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为 Error 异常抛出. 这种 Error 异常可以像 Exception 异常一 ...

  9. python中search用法_Python中的python re.search方法详解

    re.search扫描整个字符串并返回第一个成功的匹配,若string中包含pattern子串,则返回Match对象,否则返回None,注意,如果string中存在多个pattern子串,只返回第一个 ...

最新文章

  1. Oracle-ORA-01722 invalid number错误
  2. 怎么样重装系统后能使电脑更快?
  3. AbsoluteLayout 相框
  4. Vue中使用Openlayers加载Geoserver发布的TileWMS
  5. 分布式监控之Zabbix-Server
  6. 用git提交代码到远程仓库遇到的问题
  7. TImage、TPaintBox、TPicture、TBitmap、TCanvas、TGraphic 的关系与区别
  8. 计算机用户权限设置 xp,Windows XP权限设置详解 2
  9. 微型计算机原理与接口技术
  10. Apple Pay如何使用?全网最完美攻略(图文教程)!
  11. 2020-09-20
  12. 基于java springboot记账本微信小程序源码(毕设)
  13. ubuntu20修改ip地址方法
  14. 阿里平头哥首次交货——玄铁910是个啥?是芯片吗?
  15. 【数学建模】2021 年全国大学生数学建模竞赛A题一等奖获奖论文
  16. 页面置换模拟程序设计
  17. AirPods 2支持无限充电只要15分钟充满
  18. ZOOM国际版无法访问 可申领ZOOM平安云版本试用账号了
  19. 又新又全 |制图符号库、最新市级国土空间总体规划制图规范“GIS符号库“下载
  20. nvm安装node,但npm和node不识别

热门文章

  1. vue+element-ui如何为元素设置背景图片
  2. Pycharm git-创建本地仓库\创建分支\合并分支\回溯版本\加入git后文件颜色代表的含义
  3. 我们为什么要关注惊喜
  4. html5全屏动画幻灯片切换,全屏幻灯片切换动画可拖拽
  5. Linux系统中查看Mysql数据库版本号的四种方法(图文完整版)
  6. SAP ABAP BADI ACC_DOCUMENT创建财务凭证扩展字段增强
  7. 王炸DTS空间音效耳机——极度未知HyperX毒刺灵动版游戏无线耳机
  8. 【平面设计作品】 为热爱做设计,也是我的热爱
  9. 计算机图形学实验-三维变换
  10. 【精】合集 zbrush 10种风格女性角色建模 新手教程,zbrush基础教程 案例讲解