L'expression suivante fonctionne pour tout, sauf les virgules :
'^[-+]*[0-9,]*[.]*[0-9]+$'
Vous pouvez vérifier le mauvais placement des virgules avec des vérifications supplémentaires telles que :
not regexp_like(txt, '[-+]*,$') and not regexp_like(txt, [',,'])