The cases where the xx appears last are clearly taken care of by your regex BrowserUk,the part I am not understanding is that you are saying that it will fall over if yout date containes any occurances of xx without |'s or x's on either side, please give an instance of this BrowserUk, in terms of data to facilitate the understanding as yoru regex is doing pretty good in all data strings