需要从字符串中获取水果名称.该字符串可能有两种可能的方式:
'fruit orange (some text)' or 'fr. orange (some text)'
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码:
match(/fruit (.*) \(|fr. (.*) \(|/i)
Run Code Online (Sandbox Code Playgroud)
问题是,在第一种情况下,我在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)
Run Code Online (Sandbox Code Playgroud)