需要正则表达式帮助,找到重复模式

时间:2011-03-07 18:13:04

标签: javascript regex

我有一些文字

I01:00:00:05
I01:00:00:04
I01:00:00:03
I01:00:00:02
I01:00:00:01

是否有可以找到每个人的正则表达式?

我试过了: var locs = txt.match(/(([A-Z]\d\d\:\d\d\:\d\d\:\d\d)+)+/);

它找到了匹配的第一个模式的5个副本。

有没有办法让它们中的每个都有一个数组?

由于

4 个答案:

答案 0 :(得分:2)

如果你在末尾包含'g'标志它应该有效。

var locs = txt.match(/(([A-Z]\d\d\:\d\d\:\d\d\:\d\d)+)+/g);

答案 1 :(得分:0)

你只是在你的正则表达式上缺少g标志,它会找到与模式匹配的所有出现。 像这样:

var locs = txt.match(/(([A-Z]\d\d\:\d\d\:\d\d\:\d\d)+)+/g);

当然,如果该模式实际上是好的;)

答案 2 :(得分:0)

编写正则表达式以匹配单个实例,并使用全局说明符/g获取匹配集合(注意对正则表达式的修改):

var locs = txt.match(/([A-Z]\d\d\:\d\d\:\d\d\:\d\d)/g);

http://rubular.com/r/L2ZNyz2yJy

答案 3 :(得分:0)

确实在这种情况下,“+”符号不是必需的:

var locs = txt.match(/[A-Z]\d\d\:\d\d\:\d\d\:\d\d/g);

locs将为["I01:00:00:05", "I01:00:00:04", "I01:00:00:03", "I01:00:00:02", "I01:00:00:01"]