re = /\s{1,}(male)\.$/gi
"A girl is a female, and a boy is a male.".match(re);
這導致「男性」。Javascript正則表達式匹配捕獲正在返回整個匹配,而不是組
我要的是「男性」
我把男性括號,我雖然會抓住這一點組。
感謝您的幫助
re = /\s{1,}(male)\.$/gi
"A girl is a female, and a boy is a male.".match(re);
這導致「男性」。Javascript正則表達式匹配捕獲正在返回整個匹配,而不是組
我要的是「男性」
我把男性括號,我雖然會抓住這一點組。
感謝您的幫助
你需要拿出 'G' 選項,在您的正則表達式:
re = /\s{1,}(male)\.$/i
產生
[" male.", "male"]
雖然它不再是全球性的。第一場比賽將停止。 – Francisc 2011-06-05 21:27:54
雅見第二段: 匹配方法返回的數組有三個屬性,input,index和lastIndex。輸入屬性包含整個搜索的字符串。 index屬性包含完整搜索字符串中匹配子字符串的位置。 lastIndex屬性包含最後一次匹配中最後一個字符後面的位置。 如果未設置全局標誌(g),則數組的元素零包含整個匹配,而元素1到n包含任何子匹配。 如果設置了全局標誌,則元素0到n包含發生的所有匹配。 – 2012-10-09 04:02:58
@Francisc:'g'標誌在你的情況下無關緊要。你的模式包含'$'結束標記,最多會有1個匹配。 – collapsar 2013-07-03 08:47:48
在String.prototype.match()捕獲的組不返回。
如果您需要捕獲組使用RegExp.prototype.exec()。它將返回一個數組,第一個元素將是整個匹配,並且下一個元素將捕獲捕獲組。
var regexObj = /\s{1,}(male)\.$/gi;
console.log(regexObj.exec('A girl is a female, and a boy is a male.'));
將輸出:
[' male.', 'male'] // Second element is your capture group
你可以只使用單詞邊界(\ B),而不是\ S {1,}在這個例子中。例如。/\ bmale/- 這會匹配男性而不是女性。 – 2011-03-10 22:44:09