我需要匹配所有条目,例如{*}的字符串(使用Javascript)。我该怎么办?
以下是输入:"#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n";
提前致谢
答案 0 :(得分:3)
使用正则表达式:
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]);
}
答案 1 :(得分:2)
您可以尝试使用以下正则表达式:
var str = "#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n".
var m = str.match(/{.*?}/g);
您可以在m
内找到所有匹配项。
答案 2 :(得分:2)
对于括号内的文本,您应该能够使用此模式:
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"
使模式“贪婪”,以便它可以找到所有出现的内容。