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个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...
随机推荐
- centos下python3.6安装uwsgi失败。
报错信息(省略大部分): plugins/python/uwsgi_python.h::: fatal error: Python.h: No such file or directory #incl ...
- dubbo-springboot入门级demo
1. dubbo-springboot入门级demo 1.1. 前言 最后一个做运维的朋友和我提起,他们公司想做个dubbo灰度发布的功能,而这个功能落到了他头上.在我的印象里,dubbo应该可以通过 ...
- SpringBoot 2.X集成Hive-jdbc 3.1.1
最近公司有一个需求,需求的内容是根据用户页面选择的参数条件查询Hive,数量量大致是300万以内,要求3秒响应.使用的其它的技术就不要说了,先说说SpingBoot集成Hive-jdbc吧,网上虽然有 ...
- 剑指Spring源码(二)
这是春节后的第一篇博客,我在构思这篇博客的时候,一度想放弃,想想要不要换个东西写,因为毕竟个人水平有限,Spring源码实在博大精深,不是我这个菜的抠脚的菜鸡可以驾驭的,怕误人子弟,还有就是源码分析类 ...
- Identity Server 4 - Hybrid Flow - Claims
前一篇 Identity Server 4 - Hybrid Flow - MVC客户端身份验证: https://www.cnblogs.com/cgzl/p/9253667.html Claims ...
- 使用描述符实现property功能
# Author : Kelvin # Date : 2019/1/25 14:46 class Decproperty: def __init__(self, func): self.func = ...
- 前端笔记之移动端&响应式(中)视口&百分比布局&弹性盒模型&rem&fillpage
一.viewport视口 1.1什么是屏幕尺寸.屏幕分辨率.屏幕像素密度? 屏幕尺寸:指屏幕的对角线的长度,单位是英寸,常见的屏幕尺寸有3.5.3.7.4.2.4.7.5.0.5.5.6.0等. 屏幕 ...
- Spring Boot 2.x 系列教程:WebFlux REST API 全局异常处理 Error Handling
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本文内容 为什么要全局异常处理? WebFlux REST 全 ...
- C#语法——元组类型
元组Tuple 我们现在使用的C#语法已经可以满足日常的开发需求,但C#语法还在进行版本的更新,在创造更多更优秀的语义来让我们使用.这里介绍一下C#5.0里的提供的语法——元组. 在C#中定义T ...
- k8s健康检查(七)--技术流ken
默认的健康检查 强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness ...