Regex to find addresses and phone numbers
Not sure about Java string catenation.
Below is your regex formatted and commented (by RegexFormat 5)  

This puts it in expanded mode. The good thing is anybody can read it in
your source code for later reference.  

Below is 2 versions. One a c++ normal catenation where newline \n are
added. Two a single quoted string where the newline is natural.  

The nice thing about doing this in your code is you can always print it out
for debug purposes. It prints as a nice format.  

"(?x)                                                               \n"
"   ( [^\\^]* )            # (1), Address type                      \n"
"   \\^                                                             \n"
"   ( [^\\^]* )            # (2), street1;street2;street3;street4;  \n"
"   \\^                                                             \n"
"   ( [^\\^]* )            # (3), City                              \n"
"   \\^                                                             \n"
"   ( [^\\^]* )            # (4), State                             \n"
"   \\^                                                             \n"
"   ( [^;]* )             # (5), Zip                                \n"
"   ;                                                               \n"
"   ( [^;]* )             # (6), Phone                              \n"
"   ;                                                               \n"


======================================

"(?x)
   ( [^\\^]* )            # (1), Address type
   \\^
   ( [^\\^]* )            # (2), street1;street2;street3;street4;
   \\^
   ( [^\\^]* )            # (3), City
   \\^
   ( [^\\^]* )            # (4), State
   \\^
   ( [^;]* )             # (5), Zip
   ;
   ( [^;]* )             # (6), Phone
   ;
"