簡體   English   中英

JS正則表達式:匹配重復模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM