I'm having trouble coming up with a regular expression for a string in the given form:

```
123123<key:value><key:value>,21313<key:value><key:value>

```

where the key:value pairs are optional, but we must not have two colons in the same key:value pairs.

I've gotten this far:

```
^((\d+)(<(.+?):(.+?)>)*)(,\d+)(<(.+?):(.+?)>)*$

```

some valid texts:

* `123131`
* `123131, 123131, 1213313`
* `12313<key:value>`
* `232133<key:value><key:value>,232133<key:value><key:value>`