un problema alla volta e non tutti insieme.
Scopriamo intanto se la stringa è ben formata, sei andata sulla regex (ed è corretto), ma sai come funziona la libreria?

http://download.oracle.com/javase/tu...sential/regex/

qui sulle regex, per gli altri punti ci si pensa dopo, anche se un'occhiata qui

http://download.oracle.com/javase/1....ng/String.html

ti può chiarire un po' le idee.

Ti ho dato i link di regex della oracle (uno dei primi result della ricerca su google "regex java" e le API di String)