Any decent CSV module will deal with commas embedded inside the data sections of CSV files.
However, to *somewhat* more directly speak to the question you asked, instead of the question you should have asked, I think you've made a basic mistake with regexes. The inside of a [...] is a bunch of chars, not a bunch of strings, and certianly not another regex. [\d|\.] doesn't mean a digit or a dot, it means a digit, a pipe, or a dot. [\d.] would be a digit or a dot.
Anyway, writing your own CSV parser isn't going to be the best way to solve this problem. Instead, use somebody else's CSV parser, then deal with the data you get back from it.