Assume input is an array you can do it several ways depending on what you want:
$ echo -e "10:20: hello\n20:39: world" | jq -cR 'capture("^(?<timestamp>.*): (?<message>.*)$")'
{"timestamp":"10:20","message":"hello"}
{"timestamp":"20:39","message":"world"}
$ echo -e "10:20: hello\n20:39: world" | jq -Rn '[inputs | capture("(?<t>.*): (?<m>.*)$").m] | join(" ")'
"hello world"
Also using inputs/0 etc in combination with reduce and foreach it's possible to process streams of text that might not end.