For optimization purposes, you may wish to keep a second boolean array that keeps track of whether a proxy chain has a regex or not (since you're looping through to check and compile anyway).  If it doesn't then, you use Arrays.equals to do the comparison which may end up being faster than the loop you're doing (i.e. only use the loop if there's at least one regex in that chain)