voy asumir que tu codigo esta bien por lo que significa que no lo he analizado. solo me voy a centrar en la expresion regular. el primer error que tienes es el repetidor. un repetidor no puede ir seguido de otro repetidor.
Código:
/^([(]?\d{2,3}+[)]?)?\d+(\d+)*(\.\w{2,3})+$/
lo otro es que hay ciertos caracteres que tienen un significado especial en las expresiones por lo que cuando queremos emplearlo como parte del patron hay que escaparlos. no te puedo dar un ejemplo porque a mi entender cada pais tiene un formato distinto.