String对象的match方法
RegExp对象的exec方法和String对象的match方法用法十分相似,分两篇博客讲讲其各自的用法和它们之间的异同。上一篇将exec方法的用法,这篇讲解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方法的用法,会发现结果与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方法的更多相关文章
- JavaScript中String对象的match()、replace() 配合正则表达式使用
正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...
- String对象的常见方法
String 对象方法 方法 描述 anchor() 创建 HTML 锚. big() 用大号字体显示字符串. blink() 显示闪动字符串. bold() 使用粗体显示字符串. charAt() ...
- JS中string对象的一些方法
原文地址(包含所有的string对象的方法): http://www.dreamdu.com/javascript/object_string/ string.slice(startPos,endP ...
- JS基础语法---String对象下的方法(字符串的方法)
实例方法---->必须要通过new的方式创建的对象(实例对象)来调用的方法 静态方法---->直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的) 字符串的常用属性: . ...
- java中String对象的split方法
在java.lang包中有String.split()方法,返回是一个String[]数组,今天碰到一个自己没注意的问题: 1.特殊分隔符 String str1 = "123|456|78 ...
- String对象的简单方法(特别讲解length()方法的实现。
length() 返回字符串中的字符数 charAt(index) 返回字符串中指定位置的字符 concat(s1) 将本字符串和字符串s1连接,返回一个新字符串 toUpperCase() 返 ...
- JS中String对象常用的方法
1. stringObject.charAt(index) 参数:index 必需,即字符在字符串中的下标. 返回值: 返回在指定位置的字符.返回的字符是长度为 1的字符串.(length属性 ...
- JavaScript RegExp对象的exec()方法
JavaScript RegExp对象的exec()方法用来匹配字符串,它的行为与match()有些不同. 对于RegExpObject.exec(),w3school上面是这样介绍的: exec() ...
- RegExp对象的exec方法
RegExp对象的exec方法和String对象的match方法用法十分相似,分两篇博客讲讲其各自的用法和它们之间的异同. 下一篇讨论match方法的用法和两者的异同. 定义及语法 [定义] exec ...
随机推荐
- JavaScript执行环境和作用域(链)的那些事
执行环境 什么是执行环境 提起作用域,我们不得不说说什么是执行环境.执行环境定义了变量或函数有权访问的其他数据,并决定其各自的行为.每一个执行环境都有一个对应的变量对象,这个对象的作用就是保存在环境中 ...
- 2. 需要对测试用的数据进行MD5加密
import hashlib phone_num = open("D:/testdata/phone10.txt","r") out_file = open(& ...
- 防止过拟合:L1/L2正则化
正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合).其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在tr ...
- secureCRT scripts as vbs
gdb multithread debug. lsusb.py # $language = "VBScript" # $interface = "1.0" Su ...
- windows 下 pyinstaller distutils not included with latest virtualenv (16.4.0)
起因 因为windows下python3.7.2内置venv虚拟环境下pyinstaller错误问题,切换virtualenv但是发现最新版本又有其他问题 - -! ModuleNotFoundErr ...
- 检查SQL语句是否合法
昨天又有一个新的需求:验证文本框输入的SQL语法是否正确. 于是就开始百度,其实也挺简单的. 首先需要知道“SET PARSEONLY { ON | OFF }”. 当 SET PARSEONLY 为 ...
- (转)Python 运算符
原文:https://blog.csdn.net/liang19890820/article/details/69690954 简述 在 Python 中,运算符是执行算术或逻辑运算的特殊符号,操作的 ...
- docker相关命令
1. 进入docker容器 ① 查看运行的容器:docker ps -a ② 进入容器:docker exec -ti [容器id] bash ③ 退出容器:eixt
- Ubuntu 下 unzip用法
unzip [参数] <压缩文件> 参数: -P <密码> zip 压缩包的密码-f 覆盖原有文件-d <路径> 指定解压路径-n 解压缩时不覆盖原有文件-o 不经 ...
- Window.localStorage
博客园 https://www.cnblogs.com/st-leslie/p/5617130.html 参考文档 https://developer.mozilla.org/zh-CN/docs/W ...