匹配所有条目{*}

时间:2013-07-08 20:37:07

标签: javascript regex

我需要匹配所有条目,例如{*}的字符串(使用Javascript)。我该怎么办?

以下是输入:"#SD#{date};{time};{lat1};{lat2};{lon1};{lon2};{speed};{course};{height};{sats}\r\n";

提前致谢

3 个答案:

答案 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内找到所有匹配项。

进一步参考:http://www.w3schools.com/jsref/jsref_match.asp

答案 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"使模式“贪婪”,以便它可以找到所有出现的内容。