JavaScript match()方法和正则表达式match()
先介绍参数为普通字符串的使用方式,此时match方法的返回值是存放首次匹配内容的数组。如果没有找到匹配结果,返回null。语法结构:
1 str.match(searchvalue)
参数解析:
(1).searchvalue:必需,规定方法要检索的字符串。
代码实例:
let str="antzone";
console.log(str.match("n"));
代码运行效果:
["n", index: 1, input: "antzone", groups: undefined]
对上述代码运行结果分析如下:
(1).match方法在有匹配结果的时候返回值是一个数组。
(2).数组第一个元素是match方法首次匹配到的子字符串,"antzone"虽然有多个"n",但是返回的数组只存储首次匹配到的"n",如果match方法的参数是全局匹配的正则,将会存储所有的匹配到的子字符串。
(3).index属性值返回首次匹配到子字符串的位置。
(4).input属性值是原字符串"antzone"。
(5).groups属性当前并不被支持,暂时不做介绍。
let str="antzone";
console.log(str.match("zon"));
代码运行效果:
["zon", index: 3, input: "antzone", groups: undefined]
首次匹配到子字符的位置,以子字符串的首字符在原字符串位置为准。
字符串与数组类似,字符位置从0开始计算,也就是第一个字符的位置为0,第二个位置为1,以此类推。
let str="antzone";
console.log(str.match("蚂蚁"));
代码运行效果:
null
如果匹配不到任何内容,方法返回值为null。
正则表达式 match()
match方法可在字符串内查找一个或多个与指定正则表达式匹配的子字符串。
方法的返回值是存放着匹配结果的数组,但数组元素并不一定全都是匹配结果,后面会详细介绍。
语法结构:
1 stringObject.match(reg)
参数解析:
(1).stringObject:从中查找子字符串的源字符串。
(2).reg:正则表达式对象或者正则表达式直接量。
浏览器支持:
(1).IE浏览器支持此方法。
(2).edge浏览器支持此方法。
(3).火狐浏览器支持此方法。
(4).谷歌浏览器支持此方法。
(5).opera浏览器支持此方法。
(6).safria浏览器支持此方法。
一.非全局匹配:
所谓非全局匹配,也就是使用g修饰符
此时,match方法最多只在字符串中成功匹配一次:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一个数组。
返回的数组解析如下:
首先说明一下,数组元素的索引是从0开始的。
(1).第0个元素是匹配结果。
(2).第1个元素是第一个引用型分组匹配的子字符串。
(3).第2个元素存放的是第二个引用型分组匹配的子字符串,依次类推。
返回的数组对象同时具有两个属性:
(1).index:返回匹配的子字符串起始字符在stringObject源字符串中的位置。
(2).input:返回stringObject源字符串。
二.全局匹配:
match方法执行全局匹配,获取所有可以匹配的子字符串:
(1).如果不存在匹配的子字符串,返回null。
(2).如果存在匹配的子字符串,返回一个数组。
与非全局匹配的区别:
(1).不具有index和input属性。
(2).不具有引用型分组匹配的子字符串,数组元素仅包含匹配的所有子字符串。
代码实例如下:
var str="本站url地址是www.softwhy.com";
var reg=/why/;
console.log(str.match(reg));
上面代码采用非全局模式,运行效果如下:
["why", index: 16, input: "本站url地址是www.softwhy.com", groups: undefined]
当前JavaScript并不支持groups,先不用去管,分析如下:
(1).数组第0个元素是匹配的子字符串。
(2).index属性值是"why"中"w"在源字符串中的位置。
(3).input属性值是整个源字符串。
var str="本站url地址是www.softwhy.com";
var reg=/w(h)y/;
console.log(str.match(reg));
代码运行效果如下:
"why", "h", index: 16, input: "本站url地址是www.softwhy.com", groups: undefined]
分析如下:
(1).数组第0个元素是匹配的子字符串。
(2).数组第一个元素是正则表达式中引用分组所匹配的内容。
(3).index属性值是"why"中"w"在源字符串中的位置。
(4).input属性值是整个源字符串。
var str="本站url地址是www.softwhy.com";
var reg=/o/;
console.log(str.match(reg));
代码运行效果如下:
["o", index: 13, input: "本站url地址是www.softwhy.com", groups: undefined]
尽管源字符串中,有多个"0",但是只能匹配第一个,因为执行的是非全局匹配。
var str="本站url地址是www.softwhy.com";
var reg=/o/g;
console.log(str.match(reg));
代码运行效果如下:
["o", "o"]
匹配结果相对单纯一些,数组中只存储所匹配到的内容。
var str="antzoane";
var reg=/a(n)/g;
console.log(str.match(reg));
代码运行效果如下:
["an", "an"]
尽管有子表达式,但是返回的数组并不包括子表达式匹配的内容,与非全局匹配不同。
JavaScript match()方法和正则表达式match()的更多相关文章
- .net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)
正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...
- python正则表达式--match search方法
1.re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None. (1)函数语法: re.match(pattern, st ...
- python正则表达式(3)--match方法
1.re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None. (1)函数语法: re.match(pattern, st ...
- match()方法解析
match()方法支持正则表达式的String对象的方法. 上篇我说了search()方法,也支持正则表达式的String对象,那么match()方法跟search()方法有什么不同呢?我们来看看. ...
- JavaScript中正则表达式test()、exec()、match() 方法
转自http://www.cnblogs.com/jane-y/articles/5183859.html 1.test test 返回 Boolean,查找对应的字符串中是否存在模式.var str ...
- JavaScript中正则表达式test()、exec()、match() 方法区别
1.test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1.&qu ...
- js正则表达式中test,exec,match方法的区别
test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1." ...
- JavaScript之match()方法讲解
定义和用法 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置. ...
- JavaScript中String对象的match()、replace() 配合正则表达式使用
正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...
随机推荐
- 秋季学期学习总结&&以及下学期的期待
秋季总结 第一学期已经结束了,下面来分点归纳下知识点: ·基础编程:利用c语言来进行编程 ·分支结构:利用if-else语句和switch语句编程,以及字符型数据的利用 ·循环结构:利用while.d ...
- 微信小程序picker组件关于objectArray数据类型绑定
一.前言: 我发现很多的同学都在抱怨说微信小程序的picker的mode = selector/mode = multiSelector 无法实现Object Array数据类型的绑定,其实很多人就想 ...
- 我的第一个MyBatis
(1)步骤:1.新建实体类对象---根据数据库字段来设计,有多少字段设多少变量,变量名要字段名一致. 2.新建配置文件config.xml---主要用来获取数据源,里面内容大致需要填写:数据库驱动 ...
- Linux 进程终止后自动重启
/opt/a.sh #! /bin/bash ps -ef | grep python3 a.py | grep -v grep | grep python3 if [ $? -ne 0 ] then ...
- 进行API开发选gRPC还是HTTP APIs?
上一篇文章我带着大家体验了一把<ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)>,如果有兴趣的可以点击链接进行查看,相信跟着做的你,也是可以跑起来的.这篇文章我们将一 ...
- 【Android Studio安装部署系列】四十一、Android Studio安装Alibaba Java Coding Guidelines插件(检查代码规范)
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 该插件主要是对今年发布的<阿里巴巴 Java 开发规约>的一个延伸,它以一个 IDE 的插件存在,可以自动对手册中的 J ...
- SublimeText 修改文件扩展名的默认语法高亮
平时经常使用sublime text3编辑matlab程序,但是sublime text使用的默认语法高亮是Object C,用起来很不方便,每次都需要在Sublime Text右下角手动点一下语法高 ...
- LindDotNetCore~Aspect面向方面编程
回到目录 Aspect面向方面编程 面向侧面的程序设计(aspect-oriented programming,AOP,又译作面向方面的程序设计.观点导向编程.剖面导向程序设计)是计算机科学中的一个术 ...
- DotNetCore跨平台~认识环境和环境变量
回到目录 环境 环境,对于开发来说就是部署的一种场景,你可以是调试场景,测试场景,生产场景,当然还可以有很多其它的场景,只要你的项目需要就可以自定义,微软帮我们定义了三种标准的环境变量,下面来说一下. ...
- Flink从入门到放弃(入门篇3)-DataSetAPI
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...