我需要匹配所有條目,例如{*}的字符串(使用Javascript)。我該怎麼做?匹配所有條目{*}
下面是一個輸入:"#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n";
在此先感謝
我需要匹配所有條目,例如{*}的字符串(使用Javascript)。我該怎麼做?匹配所有條目{*}
下面是一個輸入:"#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n";
在此先感謝
使用正則表達式可能:
var r = /{.*?}/g;
var s = "#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n";
var matches = s.match(r);
或者,如果你想要去除那些{}的結果,你可以運行。 exec()循環來獲取捕獲的數據:
var r = /{(.*?)}/g;
var s = "#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n";
var matches = [];
var match = null;
while(match = r.exec(s)) {
matches.push(match[1]);
}
你可以嘗試使用th e以下正則表達式:
var str = "#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n".
var m = str.match(/{.*?}/g);
您會在m
中找到所有匹配項。
對於剛剛括號內的文字,你應該能夠使用這個模式:
var pattern = new RegExp("([^{|^}]+)(?=})", "g");
var testString = "#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n";
var bracketTextArray = testString.match(pattern);
的bracketTextArray
變量將是一個包含下列值的數組:
"date", "time", "lat1", "lat2", "lon1", "lon2", "speed", "course", "height", "sats"
正則表達式匹配除{
以外的任何一個或多個字符的每個出現次數和}
(這是這部分:([^{|^}]+)
),緊接着是}
字符(這是這個部分:(?=})
)。 RegExp定義中的"g"
使模式變得「貪婪」,以便它能夠找到所有的事件。
您正在使用貪婪的正則表達式。它將從一個組中的第一個「{」到最後一個「}」捕獲*一切*。 –
http://www.w3fools.com/ –
你是對的,我編輯了一點點正則表達式 –