One of the errors with IPv6 was the change of textual format of addresses. In retrospect using ":" rather than "." as a separator was an error. I recently looked at some Ruby code to validate e-mail addresses where the author had forgotten to read the updates to RFC822 for IPv6. If simply more dots had been used then the fix to that code would be simple -- allow more dots.
Using ":" means that applications which used ":" for other purposes have issues. Top of this list are URLs, which use ":" to separate addresses, ports and passwords. The solution is to use square brackets to distinguish the IPv6 address. But then applications which use square brackets to find URLs have parsing issues -- such as most Wikis. And so it snowballs, all because using of using ":" rather than ".".
Worse still, IPv6 has a format which can't be found by a simple regular expression. This is done mainly to lessen the typing done by network engineers. You can type lots of ":0000:0000:0000:" or simply "::". IPv6 is the only address format I can think of where the address format is not textually regular (thinking about IPv4, DECnet, AppleTalk, Banyan VINES, IPX).
Until IPv6 it was reasonable for application authors to assume that it was the nature of a network address to be textually regular. You often see code which finds a IPv4 addresss by looking for a hit on "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+". That code can't be updated for IPv6 -- it needs to be rewritten :-(