match方法是JS的字符串方法,详细说明可以看MDN的说明

如果正则表达式匹配成功的话,match方法会返回一个数组,而数组里的数据有两种形式,对应着匹配方式:全局匹配与非全局匹配。

1. 全局匹配

  全局匹配时,数组里的数据是匹配到的所有符合正则表达式的字符串。

2.非全局匹配

  非全局匹配时,数据里的数据则是第一个匹配的值以及正则表达式的子分组匹配到的值,再附加上三个属性:

  groups:一个捕获组数组或者 undefined(如果没有定义命名捕获组)。

  index:匹配结果的开始位置。

  input:进行匹配的原字符串。

例子:

var patt = /\(([a-z]*([\d]*)[a-z]*)\)/;
var pattg = /\(([a-z]*([\d]*)[a-z]*)\)/g; var testStr = '(aaaaa11111(bbbbbb2222222bbaa)bbb(sss333sss)asdbas123bd)'; var result = testStr.match(patt);
var resultg = testStr.match(pattg); console.log(result);  //=> ["(bbbbbb2222222bbaa)", "bbbbbb2222222bbaa", "2222222", index: 11, input: "(aaaaa11111(bbbbbb2222222bbaa)bbb(sss333sss)asdbas123bd)", groups: undefined]
console.log(resultg); //=> ["(bbbbbb2222222bbaa)", "(sss333sss)"]

  打印出来的两个结果在chrome浏览器控制台看是这样的:

  

  第一个结果是非全局匹配的,可以看到数组中原有三个数据,而这三个数据对应着正则表达式的三层分组:第一层是 \(([a-z]*([\d]*)[a-z]*)\) ,第二层是 ([a-z]*([\d]*)[a-z]*) ,第三层是 ([\d]*) 。(不清楚正则表达式分组的童鞋请自行了解,或查看参考链接。)

  第二个结果是全局匹配的,就是匹配正则表达式的所有结果。

参考链接:

1. MDN上的说明

2. w3school上的说明

3. 探究js正则匹配方法:match和exec

4. 正则表达式的分组

JS match方法的返回数据的探究的更多相关文章

  1. JS match() 方法 使用

    javascript中的match函数是使用正则表达式对字符串进行查找,并将查找的结果作为数组返回,在实际开发中非常的有用,使用方法如下: stringObj.match(rgExp) 其中strin ...

  2. JS.match方法 正则表达式

    match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置. <sc ...

  3. 关于Node.js中HTTP请求返回数据需要JSON解析的问题

    在编写项目过程中,需要用到实时数据的推送需求, 所以首先想到了NodeJS的websocket模块 在网上找了一个聊天室的例子  然后将其改为自己需求的推送 其中遇到的问题 返回数据问题  :   由 ...

  4. js在方法Ajax请求数据来推断,验证无效(OnClientClick=&quot;return Method();&quot;),或者直接运行的代码隐藏

    function CheckAdd() { var flag = true; $.ajax({ cache: false, async: false, url: "/ajaxpage/get ...

  5. js match() 方法

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

  6. .net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)

    正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...

  7. JavaScript match()方法和正则表达式match()

    先介绍参数为普通字符串的使用方式,此时match方法的返回值是存放首次匹配内容的数组.如果没有找到匹配结果,返回null.语法结构: 1 str.match(searchvalue)参数解析:(1). ...

  8. element 表格无法绑定服务返回数据

    无法直接绑定返回的Object属性,需要用js做一次对象转换后,才能绑定 <template> <div> <!--<button>添加服务器</but ...

  9. 技术胖Flutter第四季-22页面跳转并返回数据

    视频地址: https://www.bilibili.com/video/av35800108/?p=23 博客地址: https://jspang.com/post/flutter4.html#to ...

随机推荐

  1. Linux_Oracle10 下载安装

    Linux_Oracle10 安装文档及oracle下载地址 http://download.csdn.net/detail/u012750578/8177405 一.启动数据库服务 [root@hq ...

  2. web前端开发——AJAX入门

    什么是AJAX AJAX: A New Approach to Web Applications XML AJAX是老技术新思想. 它所包括的内容我们之前都接触过.例如以下: (1)使用XHTML和C ...

  3. Python(十二) Pythonic与Python杂记

    一.导言 二.用字典映射代替switch case语句   # 字典代替 switch 语句 # switch () # { # case 0 : # dayName= 'a'; # break; # ...

  4. javascript“类”与继承总结

    http://haorooms.com/post/js_jc_lei2

  5. 现实人脸识别性别之路----弄清楚train_test_split函数

    '''train_test_split(trian_data,trian_target,test_size,random_state)各个参数表示的意义:trian_data表示被划分的样本特征集tr ...

  6. 51nod 多重背包问题(二进制优化)

    有N种物品,每种物品的数量为C1,C2......Cn.从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi ...

  7. @Mapper 和 @MapperScan 区别

    1.@Mapper : 为了使接口被其他类引用,需要使用@Mapper注解,这种方式要求每一个mapper类都需要添加此注解,麻烦. package com.example.demo.dao; imp ...

  8. SQL脚本存在TABLE ACCESS FULL行为

    对于SQL的执行计划,一般尽量避免TABLE ACCESS FULL的出现,那怎样去定位,系统里面哪些SQL脚本存在TABLE ACCESS FULL行为,对于9i及以后版本,使用以下语句即可 sel ...

  9. JAVA实现排队论

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/50401727 http://www.llwjy.com/blogdetail/3 ...

  10. 60.浅谈nodejs中的Crypto模块

    转自:https://www.cnblogs.com/c-and-unity/articles/4552059.html node.js的crypto在0.8版本并没有改版多少,这个模块的主要功能是加 ...