我不能明白爲什麼這個代碼片段上兩個字符串「軸承」,而不是隻是一個字符串「軸承返回數組。任何想法?爲什麼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 +)' –