>>>>> snip >>>>>
..
((\s*(\,|and|or)\s*)*
..
..
..
(?:[a-zA-Z][\dA-Z]|[\dA-Z][a-zA-Z])[\w\d\_]*)*))
..
>>>>> snap >>>>>

When I look at this parts of your Regex,  I see constructs like (a*|b*)* - These constructs consume some
billion of years if applied to a string where no match is possible. Take a closer look to "the Friedl" for
avoiding situations like this.

Maybe I'm wrong, but there are severe problems to read the Regex.

Best Regards, Wolfgang Nadasi-Donner