I have just bought a book on Regex to try and get my head around it but I'm still really struggling with it. I am trying to create a java regex that will satisfy a string configuration that can;

1. Can contain lowercase letters ([a-z])
2. Can contain commas (,) but only between words
3. Can contain colon (:) but must be separated by words or multiply (\*)
4. Can contain hyphens (-) but must be separated by words
5. Can contain multiply (\*) but if used it must be the only character before/between/after the colon
6. Cannot contain spaces, 'words' are delimitated by a hyphens (-) or commas (,) or colon (:) or the end of the string

So for example the following would be true:

1. foo:bar
2. foo-bar:foo
3. foo,bar:foo
4. foo-bar,foo:bar,foo-bar
5. foo:bar:foo,bar
6. \*:foo
7. foo:\*
8. `*:*:*`

But the following would be false:

1. foo :bar
2. ,foo:bar
3. foo-:bar
4. -foo:bar
5. foo,:bar-
6. foo:bar,
7. foo,\*:bar
8. foo-\*:bar

This is what I have so far:

```
^[a-z-]|*[:?][a-z-]|*[:?][a-z-]|*

```