buenas...
@sikociado, más o menos lo estabas logrando. en el último subpatrón te falto anclarlo al inicio y final, además de repetir el subpatrón. de todos modos, esta es mi versión que creo funciona según las pocas pruebas que hice.
Código:
/^\d{9}$|^\d{9}\-\d{9}$|^\d{9}(?:,\d{9})+$/
@albuss, evidentemente los número los trata como string, de lo contrario no estaría trabajando con expresiones regulares ya que éstas son específicamente para strings.