我试图从zigbee数据包中获取序列号(即从702442500 * 13 * 32 * 702442500#9获取)。
到目前为止,我已经尝试过这个:
test = "*#*0##*13*32*702442500#9##";
test.match("\*#\*0##\*13\*32\*(.*)#9##");
这个: test.match(" *#* 0 ## * 13 * 32 *(*)#9 ##"。);
没有运气。如何获得符合我要求的有效正则表达式?
答案 0 :(得分:1)
答案 1 :(得分:1)
如果要提取大号,可以使用:
/\*#\*0##\*13\*32\*([^#]+)#9##/
请注意,我使用在Javascript中编写模式所需的分隔符/
(不使用regexp对象语法)。当你使用这种语法时,(双)?报价不需要。我使用[^#]+
代替.*
,因为它对正则表达式引擎更清晰,更有效。
答案 2 :(得分:1)
获取该部分字符串的最简单方法是使用
var regex = /(\*\d{3,}#)/g,
test = "*13*32*702442500#9";
var match = test.match(regex).slice(1,-1);
这会捕获*
后跟3个或更多\d
个(数字),直到达到octothorpe。使用全局(/g
)修饰符将使其返回匹配数组。
例如,如果
var test = "*13*32*702442500#9
*#*0##*13*32*702442500#9##";
然后,test.match(regex)
将返回["*702442500#", "*702442500#"]
。然后,您可以切片此数组的元素:
var results = [],
test = "... above ... ",
regex = /(\*\d{3,}#)/g,
matches = test.match(regex);
matches.forEach(function (d) {
results.push(d.slice(1,-1));
})
// results : `["702442500", "702442500"]`