(Pre-existing) This is a terribly crude regex for the job.
Off the top of my head, "([0-7]+|([augo]+[+=-][rwxXst]+,)*[augo]+[+=-][rwxXst]+)" seems more accurate, if a bit long-winded.
I guess we can live with your version for now, at least ;^)