我无法理解为什么这段代码片段会在两个字符串上返回一个数组" BEARING"而不只是一个字符串" BEARING。有什么想法吗?
const cleanedString = "ANGULAR CONTACT (ROLLING) BEARING"
const noun = cleanedString.match(/\b(\w+)$/);
console.log(noun);

答案 0 :(得分:1)
您需要使用全局/g
标志:
const cleanedString = "ANGULAR CONTACT (ROLLING) BEARING"
const noun = cleanedString.match(/\b(\w+)$/g);
console.log(noun);

来自String.prototype.match() [MDN]:
如果正则表达式不包含g标志,str.match()将返回与RegExp.exec()相同的结果。
答案 1 :(得分:1)
它返回一个2的数组,表示
您可以通过
使其成为非捕获组
const cleanedString = "ANGULAR CONTACT (ROLLING) BEARING"
const noun = cleanedString.match(/\b(?:\w+)$/);
console.log(noun);

其中?:表示该组将无法捕获
答案 2 :(得分:1)
默认匹配返回匹配为第一个值的字符串。
通过将parens放入正则表达式中,您要求返回匹配字符串的一部分(在这种情况下恰好相同)。
所以如果你的正则表达式是这样的话:
/^(\w+).*\b(\w+)$/
您将返回3个字符串