javascript - 从匹配中获取找到的值(正则表达式)

标签 javascript regex

需要从字符串中获取水果名称。该字符串可以有 2 种可能的方式:

'fruit orange (some text)' or 'fr. orange (some text)'

我正在使用以下代码:

match(/fruit (.*) \(|fr. (.*) \(|/i)

问题是,在第一种情况下,我得到一个在 1 个位置上有“orange”的数组,而在第二种情况下,“orange”在 2 个位置上。

无论使用哪种情况来查找值(水果名称),最好的方法是什么?

最佳答案

您可以使用捕获组。首先将 fr 与匹配点或 uit 的可选部分相匹配。然后匹配空白字符 \s,然后在组中捕获非空白字符 \S+

^fr(?:\.|uit)\s(\S+)

或者使用更广泛的方法:

^\S+\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)

关于javascript - 从匹配中获取找到的值(正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51424779/

相关文章:

显示站点上的 Javascript/CSS 问题

javascript - 如果 window.location 通过变量以指定值结尾

多行编写的 JavaScript 正则表达式

javascript - 当不同的链接包含相同的词时,用链接替换词

javascript - 如何将 HTML 元素的文本设置为表单文本提交?

javascript - 读取 CSV 错误 : Illegal Data. 发生了什么事?

javascript - jQuery 日期选择器设置格式

javascript - 页面加载时动画 div 不透明度 jQuery

r - 将字符作为项目定界符插入到 R 中的字符串中

javascript - 正则表达式仅检查开始和结束以及数字