如何使用正则表达式从消息中过滤此数据?

时间:2014-12-17 03:58:29

标签: javascript regex

我的邮件格式如下:

Character Name > <url=fitting:11978:14240;1:31366;1:1447;2:31952;1:14136;1:31378;1:2104;2:3608;4:12058;1:31932;1:2488;6:29001;5::>He Dead :(</url> asdf asefase 351235125

我想过滤掉这个:

:11978:14240;1:31366;1:1447;2:31952;1:14136;1:31378;1:2104;2:3608;4:12058;1:31932;1:2488;6:29001;5::

如果我只是将其限制为数字;:,它还会捕获消息中的数字和消息上的时间戳(偶尔会有另一个属性),这样似乎不起作用正常。

如果数据是输入中的唯一内容,我也希望能够获取数据:

:11978:14240;1:31366;1:1447;2:31952;1:14136;1:31378;1:2104;2:3608;4:12058;1:31932;1:2488;6:29001;5::

有时第一个:也不存在。

任何想法如何最好地过滤掉这个?我对正则表达式感到有点难过。

编辑:另一个例子

[04:04:55] Morpheus Deathbrew > is this okay? it's cap stable  <url=fitting:11978:14240;1:2032;1:31366;1:1447;2:2281;1:31952;1:14136;1:31378;1:2104;1:3608;4:12058;1:2488;6:29001;6::>He Dead :(</url>

我认为大多数解决方案在某些情况下也会匹配时间戳。如果它在聊天消息中有::我也希望能够仍然处理它。也许匹配,如果它有::然后数字?并且::和::?

之间至少有一个;

1 个答案:

答案 0 :(得分:2)

这样的东西
/[\d:;]+::/
  • [\d:;]+匹配任何数字:;+量词是贪婪的,会消耗身体中可能出现的::,直到最后::

  • ::与上一个::

  • 相匹配

Regex Demo


修改

执行格式

/:?(\d+:\d+;)+\d+::/

Regex Demo