Em última análise, cada string é um nome de coluna válido, uma vez que está entre aspas duplas (o MySQL pode não obedecer a essa regra dependendo da configuração. Ele não usa aspas duplas como aspas de identificador na instalação padrão).
No entanto, se você quiser ser multiplataforma (como sugerem as diferentes tags DBMS), verifique o mínimo denominador comum.
O manual do PostgreSQL tem uma boa definição disto:
Portanto, você deve verificar o seguinte com uma expressão regular:
- começa com uma letra
- contém apenas caracteres (letras) e dígitos e um sublinhado
Portanto, uma expressão regular como a seguinte deve cobrir isso:
^[a-zA-Z_][a-zA-Z0-9_]*$
Como o SQL não diferencia maiúsculas de minúsculas (a menos que aspas duplas sejam usadas), letras maiúsculas e minúsculas são permitidas.