JavaScript string的match和matchAll基本使用方法


一、match

match() 方法返回一个字符串匹配正则表达式的结果

str.match(reg)

reg:一个正则表达式对象,如果传入的不是正则表达式,则会隐式的调用new RegExp(obj) 将其转为正则表达式。如果不传则会返回一个包含空字符串的数组[""]

返回值:1,如果reg使用g(全局搜索)标志,则返回字符串与正则表达式匹配的所有结果组成的数组,如果没有匹配的字符串则返回null
2,如果reg没有使用g(全局搜索)标志,则返回第一个匹配的字符串和其他相关的匹配信息。包括:
groups:一个捕获组对象或undefined(如果没有定义命名捕获组)
index:匹配的结果的开始索引位置
input:搜索的字符串

const str = 'Hello JavaScript'
str.match()  // [""]
str.match(/JS/) // null
str.match(/JavaScript/g)  // ["JavaScript"]
str.match(/JavaScript/)  // [0: "JavaScript", groups: undefined, index: 6, input: "Hello JavaScript"]
str.match(/(?<J>Java)(?<S>Script)/)  // [0: "JavaScript", 1: "Java", 2: "Script", groups: { J: "Java", S: "Script" }, index: 6, input: "Hello JavaScript"]

二、matchAll

matchAll() 方法返回一个包含所有匹配正则表达式的结果及其分组捕获组的迭代器

语法:str.matchAll(reg)

reg:正则表达式对象。如果不是正则表达式则会使用new RegExp(obj)隐式转换为正则表达式。表达式必须设置为 g (全局模式)否则会报错

返回值:一个迭代器,可以使用for…of…,数组新增的扩展符(…)或Array.from()实现功能

const str = 'hello javascript hello css'
console.log(...str.matchAll(/hello/g))
// [0: "hello", groups: undefined, index: 0, input: "hello javascript hello css"]
// [0: "hello", groups: undefined, index: 17, input: "hello javascript hello css"]

// 0: "hello"  匹配的字符串,如果有使用分组会在后面依次列出来
// groups: undefined  没有使用命名捕获组会返回undefined,否则会返回包含命名捕获组的对象
// index: 0  匹配的结果在当前字符串位置开始的索引
// input: "hello javascript hello css" 当前字符串
  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值