[英]JS regexp: match repeated pattern
我想知道為什么這些正則表達式不相等:
/(a)(a)(a)/.exec ("aaa").toString () => "aaa,a,a,a" , as expected
/(a){3}/.exec ("aaa").toString () => "aaa,a" :(
/(a)*/.exec ("aaa").toString () => "aaa,a" :(
應該如何重新格式化后兩個,以使其表現得像前一個一樣? 重要的是我要匹配並記住任意倍數。
下一行
/([abc])*/.exec ("abc").toString () => "abc,c"
建議每個括號中只保存一個字符-最后一個匹配項。
您可能正在尋找:
var re = /([abc])/g,
matches = [],
input = "abc";
while (match = re.exec(input)) matches.push(match[1]);
console.log(matches);
//=> ["a", "b", "c"]
請記住,任何匹配的組都不會為您提供最后一個匹配的模式。
RegExBuddy非常好地描述了它:
注意:您重復了捕獲組本身。 該組將僅捕獲最后一次迭代
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.