我不能明白为什么这个代码片段上两个字符串“轴承”,而不是只是一个字符串“轴承返回数组。任何想法?为什么String.prototype.match()在字符串只有一个唯一匹配时返回两个元素?
const cleanedString = "ANGULAR CONTACT (ROLLING) BEARING"
const noun = cleanedString.match(/\b(\w+)$/);
console.log(noun);
我不能明白为什么这个代码片段上两个字符串“轴承”,而不是只是一个字符串“轴承返回数组。任何想法?为什么String.prototype.match()在字符串只有一个唯一匹配时返回两个元素?
const cleanedString = "ANGULAR CONTACT (ROLLING) BEARING"
const noun = cleanedString.match(/\b(\w+)$/);
console.log(noun);
您需要使用全球/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()。
啊,谢谢!! :) –
很高兴帮助:)。 –
它返回为2的阵列,其表示该字符串
你可以把它由非捕获组
const cleanedString = "ANGULAR CONTACT (ROLLING) BEARING"
const noun = cleanedString.match(/\b(?:\w+)$/);
console.log(noun);
其中:表示,该集团将捕捉
默认情况下比赛是不返回的第一个值匹配的字符串。
通过将parens放入正则表达式中,您要求返回匹配字符串的一部分(在本例中恰好相同)。
因此,如果您正则表达式已经成为此:
/^(\w+).*\b(\w+)$/
您将有3个字符串返回
两场比赛:第一场比赛'\ b(\ w +)$',第二场比赛'(w +)' –