正则表达式匹配的长度

时间:2013-07-03 20:59:44

标签: javascript regex

我有一组数据正在通过正则表达式过滤到不同的数组中。其中一个数组用于包含对我的程序来说被认为“太长”的数据。并非所有这些“太长”的实例都是相同的长度,但我想缩短它们。

我想要像DRB1 * 01:02。

太长了就像DRB1 * 01:02:03或更长时间,包括像DRB1 * 01:02:03:abc:29

但是,前面的字母长度并不总是相同。我将处理诸如A * 1:01:02或TIM * 01:02之类的事情。因此,我特别关注两个整数及其前面的冒号的集合,以及可能在“太长”的数据中可能跟随的任何字母。我希望前面的字母,明星,两组数字和它们之间的冒号。

我想使用正则表达式来查找“太长”的数据片段,然后测量它匹配的数据的长度,然后向后切片以将其删除。

某些东西让我知道DRB1 * 01:02:03与* 01:02:03匹配,长度为9.相同的东西如DRB1 * 01:02:03:abc:29,其中它匹配* 01:02:03:abc:29并且告诉我长度为16.不匹配单词的长度。

有没有办法找到正则表达式匹配的数据部分的长度?包括正则表达式没有明确结束的情况?

我正在使用JavaScript。

2 个答案:

答案 0 :(得分:1)

使用捕获组获取*之后匹配的部分:

var matches = str.match(/^[A-Z]+(\*.*)$/);
if (matches) {
    var len = matches[1].length;
    alert("It's "+len+" characters long");
}

答案 1 :(得分:0)

perlish regex

 if (/([A-Z0-9]+\*\d+:\d+)(.+)/) {
    print "too long, prefix:$1 extra stuff:$2 length:".length($2)."\n";
 }