Javascript 正则表达式匹配缺少奇数索引

Javascript Regex match missing odd index

这段 Meteor 客户端代码使用正则表达式来匹配句子中的单词,它匹配得很好,但只匹配索引 0 和偶数索引。为什么它不匹配每个索引号?谢谢

  let matches = '2006 BLUE TOYOTA COROLLA 120 SER SEDAN'.match(/[A-Z0-9]*/gi)
  console.log('yr: ', matches[0])       //2006
  console.log('color: ', matches[1])    // blank, why?
  console.log('color?: ', matches[2])   //BLUE
  console.log('make?: ', matches[3])    // blank, why?
  console.log('make: ', matches[4])     //TOYOTA
  console.log('modle: ', matches[6])    //COROLLA
})

发生这种情况是因为您使用 * 运算符而不是 + 它们之间的区别是:

* - 0 个或多个前面的表达式

+ - 1 个或多个前面的表达式

所以在你的情况下 * 运算符将这个空的 space 视为“0 或更多”并认为它是一个单独的元素, 您可能想要的表达式是:

let matches = '2006 BLUE TOYOTA COROLLA 120 SER SEDAN'.match(/[A-Z0-9]+/gi)