javascript - 从匹配中获取找到的值(正则表达式)
问题描述
需要从字符串中获取水果名称。该字符串可能有两种可能的方式:
'fruit orange (some text)' or 'fr. orange (some text)'
我正在使用以下代码:
match(/fruit (.*) \(|fr. (.*) \(|/i)
问题是,在第一种情况下,我得到一个在 1 个位置上带有“橙色”的数组,而在第二种情况下,“橙色”在 2 个位置上。
无论使用哪种情况来查找值(水果名称),获得发现值(水果名称)的最佳方法是什么?
解决方案
您可以使用捕获组。首先匹配fr
与点或匹配的可选部分uit
。然后匹配一个空白字符\s
,然后在一个组中捕获不是空白字符\S+
或者使用更广泛的方法:
然后,您可以使用解构赋值从以下位置获取值String#match
:
let re = /^fr(?:\.|uit)\s(\S+)/i
let str1 = 'fruit orange (some text)'
let str2 = 'fr. orange (some text)'
let [,match1] = str1.match(re) // get str1.match(re)[1] while discarding str1.match(re)[0]
let [,match2] = str2.match(re)
console.log(match1)
console.log(match2)
推荐阅读
- php - 密码验证不起作用
- database - 复制稳定 sortKey 的概念
- java - Java List forEach Lamba 表达式 - 第一个元素并遍历所有元素
- javascript - Chrome JavaScript 控制台中换行符的逻辑
- docker - Docker:来自守护进程超时的错误响应
- java - 打印二维数组 Java
- batch-file - 如何使用命令打开 cmd 一定次数
- django - Elastic Beanstalk 实例未使用 https 响应
- php - 缓存总是返回 200
- react-select - React Select Async 从下拉列表中清理结果