Нет необходимости в регулярных выражениях. Достаточно просто взять первый элемент из результата split(":")
:
case class Account(accountId: String)
List("123:$", "456:$").map(s => Account(s.split(":")(0)))
// res1: List[Account] = List(Account("123"), Account("456"))
В случае, если предпочтение отдается регулярному выражению:
val pattern = """(\d*):.*""".r
List("123:$", "456:$", "xyz:$").collect{ case pattern(num) => Account(num) }
// res2: List[Account] = List(Account("123"), Account("456"))