Don't do it that way at all. It is better to prevent the error from taking place than to try to catch and correct it after it has happened.
You should use some type of point and click interface for selecting the seats that does not require typing in the IDs for each seat. You need either a seating chart of available seats to click or some other interface where you select available and adjacent seats from a list. Either way, the system enters the data for you and putting it all in one field is not ideal either. A set of related records like line items in an invoice would most always be a better approach.
Length ( Filter ( YourTable::YourField ; "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ) * 2 = YourTable::QtyField
Will only evaluate as True if the number of two character seat IDs matches the specified quantity.
But note that I have assumed two character seat IDs. If seat IDs can be 3 characters: 15E or 99A, then this won't work.
should be Length ( Filter ( YourTable::YourField ; "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ) / 2 = YourTable::QtyField?
You inspired me a lot, thank you so much, it works now!