我需要匹配所有条目,如 { * } 字符串(使用 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]);
}
您可以尝试使用以下正则表达式:
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"
{
正则表达式匹配除and }
(即这部分:)之外的任何一个或多个字符的每次出现,([^{|^}]+)
其后紧跟一个}
字符(即这部分:)(?=})
。RegExp 定义中的"g"
使模式“贪婪”,因此它会找到所有出现的地方。