JavaScript正则表达式上的转义星

时间:2014-06-17 00:50:52

标签: javascript regex

我试图从zigbee数据包中获取序列号(即从702442500 * 13 * 32 * 702442500#9获取)。

到目前为止,我已经尝试过这个:

test = "*#*0##*13*32*702442500#9##";
test.match("\*#\*0##\*13\*32\*(.*)#9##");

这个: test.match(" *#* 0 ## * 13 * 32 *(*)#9 ##"。);

没有运气。如何获得符合我要求的有效正则表达式?

3 个答案:

答案 0 :(得分:1)

以下正则表达式匹配至少有三位数的数字,

/([0-9][0-9][0-9]+)/

DEMO

答案 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"]`