diff --git a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form
index dbfb1306a44fadea51d6bae33e9d35e2a3ba7d46..bffaede8fdf5c09908214d026d6c6d2499841c1d 100644
--- a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form
+++ b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.form
@@ -54,7 +54,6 @@
           </Properties>
           <Events>
             <EventHandler event="focusGained" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="txtNombreFocusGained"/>
-            <EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtNombreKeyTyped"/>
             <EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="txtNombreKeyPressed"/>
           </Events>
           <Constraints>
diff --git a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java
index ed6d1ce62f2669992189d5637aa184deb3496729..10ea8ea7907527ca2d7aa4326a2ccc41e6b7a3e2 100644
--- a/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java
+++ b/UyTube_aplicacion/src/Presentacion/Categoria/frmAltaCategoria.java
@@ -7,6 +7,8 @@ import Logica.Interfaces.IAdmin;
 import java.awt.Color;
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import javax.swing.BorderFactory;
 import javax.swing.JOptionPane;
 import javax.swing.border.Border;
@@ -18,7 +20,10 @@ public class frmAltaCategoria extends javax.swing.JDialog {
     Border bordeDefault;
     Color colorOK = new ColorUIResource(40,167,69);
     Color colorError = new ColorUIResource(220,53,69);
-
+    Pattern patronCategoria= Pattern.compile("^([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*"
+            + "([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)\\s*([A-Za-zÑñÁáÉéÍíÓóÚú\\d\\-_]+)$");
+    String nuevaCategoria = new String();
+    
     public frmAltaCategoria(java.awt.Frame parent, boolean modal) {
         super(parent, modal);
         initComponents();
@@ -26,6 +31,49 @@ public class frmAltaCategoria extends javax.swing.JDialog {
         bordeDefault = txtNombre.getBorder();
         sys = Fabrica.getInstancia().getIAdmin();
     }
+    
+    private boolean validarCategoria(){
+        nuevaCategoria = txtNombre.getText().trim().toUpperCase();
+        if(nuevaCategoria.equals("")){
+            lbMensaje.setText(" El campo nombre está vacío");//mensaje de error al adminstrador
+            cambiarColoresError();
+            return false;
+        }else if(nuevaCategoria.length() > 30){
+            lbMensaje.setText(" El nombre excede los 30 caracteres");//mensaje de error al adminstrador
+            cambiarColoresError();
+            return false;
+        }
+        else if(!validarFormatoCategoria(nuevaCategoria)){
+            lbMensaje.setText(" El fomrato es alfanumérico");//mensaje de error al adminstrador
+            cambiarColoresError();
+            return false;
+        }
+        else{
+            //Recorre todas las categorias existentes 
+            try{
+                for(String item : sys.listarCategorias()) {
+                    //Si la categoria ya existe avisa al administrador
+                    if(nuevaCategoria.equals(item)){
+                        lbMensaje.setText(" "+nuevaCategoria + " ya existe");//mensaje de error al adminstrador
+                        cambiarColoresError();
+                        nuevaCategoria = "";
+                        return false;
+                    }
+                }                
+            } catch (Exception e) {
+                JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            }      
+        }
+        return true;
+    }
+    
+    private boolean validarFormatoCategoria(String cat){
+        Matcher mather = patronCategoria.matcher(cat); 
+        if (mather.find() == true) {
+            return true;
+        } 
+        return false;
+    }
 
     @SuppressWarnings("unchecked")
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
@@ -56,9 +104,6 @@ public class frmAltaCategoria extends javax.swing.JDialog {
             }
         });
         txtNombre.addKeyListener(new java.awt.event.KeyAdapter() {
-            public void keyTyped(java.awt.event.KeyEvent evt) {
-                txtNombreKeyTyped(evt);
-            }
             public void keyPressed(java.awt.event.KeyEvent evt) {
                 txtNombreKeyPressed(evt);
             }
@@ -111,50 +156,16 @@ public class frmAltaCategoria extends javax.swing.JDialog {
     }// </editor-fold>//GEN-END:initComponents
 
     private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptarActionPerformed
-        String nuevaCategoria = txtNombre.getText().trim().toUpperCase();
-        if(!nuevaCategoria.equals("") && nuevaCategoria.length()<31){
-            //Recorre todas las categorias existentes
-            boolean existe = false;//Variable 
-            try{
-                for(String item : sys.listarCategorias()) {
-                    //Si la categoria ya existe avisa al administrador
-                    if(nuevaCategoria.equals(item)){
-                        existe = true;
-                        lbMensaje.setText(" "+nuevaCategoria + " ya existe");//mensaje de error al adminstrador
-                        lbMensaje.setBackground(colorError);
-                        lbMensaje.setOpaque(true);
-                        lbMensaje.setForeground(Color.WHITE);  //texto en rojo
-                        txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo
-                        nuevaCategoria = "";
-                        break;
-                    }
-                }
-                //Si la categoria no existe se agrega
-                if(!existe){
-                    sys.altaCategoria(nuevaCategoria);
-                    txtNombre.setText("");
-                    lbMensaje.setForeground(Color.white);  //texto en rojo
-                    lbMensaje.setBackground(colorOK);
-                    lbMensaje.setText(" Categoría \""+nuevaCategoria +"\" ingresada. OK");//
-                    lbMensaje.setOpaque(true);
-                    txtNombre.setBorder(bordeDefault); //Pone el borde con sus valores por default
-                    nuevaCategoria = "";
-                }
+        //Si la categoria supera la validacion la ingresa
+        if (validarCategoria()) {
+            try {
+                sys.altaCategoria(nuevaCategoria);
+                txtNombre.setText("");
+                cambiarColoresOK();
+                nuevaCategoria = "";
             } catch (Exception e) {
-                JOptionPane.showMessageDialog(null, "Se produjo un error al intentar ingresar la nueva categoría.", "Alta de Categoría", JOptionPane.WARNING_MESSAGE);
-            }      
-        }else if(nuevaCategoria.equals("")){
-            lbMensaje.setText(" El campo nombre está vacío");//mensaje de error al adminstrador
-            lbMensaje.setBackground(colorError);
-            lbMensaje.setOpaque(true);
-            lbMensaje.setForeground(Color.WHITE);  //texto en rojo
-            txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo
-        }else if(nuevaCategoria.length() > 30){
-            lbMensaje.setText(" El nombre excede los 30 caracteres");//mensaje de error al adminstrador
-            lbMensaje.setBackground(colorError);
-            lbMensaje.setOpaque(true);
-            lbMensaje.setForeground(Color.WHITE);  //texto en rojo
-            txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo
+                JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
+            }
         }
     }//GEN-LAST:event_btnAceptarActionPerformed
 
@@ -165,76 +176,44 @@ public class frmAltaCategoria extends javax.swing.JDialog {
         this.setVisible(false);
     }//GEN-LAST:event_btnCancelarActionPerformed
 
-    private void txtNombreKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNombreKeyTyped
-        // Solo letras
-        if ( ! Character.isLetter(evt.getKeyChar())) {
-            getToolkit().beep();
-            evt.consume();
-        }
-    }//GEN-LAST:event_txtNombreKeyTyped
-
     private void txtNombreFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNombreFocusGained
         // Cuando obtiene el foco los colores se resetean
         txtNombre.setText("");
         lbMensaje.setText("");
         lbMensaje.setOpaque(false);
-        txtNombre.setBorder(bordeDefault);
-        
+        txtNombre.setBorder(bordeDefault);        
     }//GEN-LAST:event_txtNombreFocusGained
-
+    
+    private void cambiarColoresOK(){
+        lbMensaje.setForeground(Color.white);  //texto en rojo
+        lbMensaje.setBackground(colorOK);
+        lbMensaje.setText(" Categoría \"" + nuevaCategoria + "\" ingresada. OK");//
+        lbMensaje.setOpaque(true);
+        txtNombre.setBorder(bordeDefault); //Pone el borde con sus valores por default
+    }
+  
+    private void cambiarColoresError() {
+        lbMensaje.setBackground(colorError);
+        lbMensaje.setOpaque(true);
+        lbMensaje.setForeground(Color.WHITE);  //texto en rojo
+        txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo
+    }
+    
     private void txtNombreKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNombreKeyPressed
         // Al presionar ENTER
         if(evt.getKeyCode() == KeyEvent.VK_ENTER){
-            String nuevaCategoria = txtNombre.getText().trim().toUpperCase();
-            if(!nuevaCategoria.equals("") && nuevaCategoria.length()<31){
-                //Recorre todas las categorias existentes
-                boolean existe = false;//Variable 
-                try{
-                    for(String item : sys.listarCategorias()) {
-                        //Si la categoria ya existe avisa al administrador
-                        if(nuevaCategoria.equals(item)){
-                            existe = true;
-                            lbMensaje.setText(" "+nuevaCategoria + " ya existe");//mensaje de error al adminstrador
-                            lbMensaje.setBackground(colorError);
-                            lbMensaje.setOpaque(true);
-                            lbMensaje.setForeground(Color.WHITE);  //texto en rojo
-                            txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo
-                            nuevaCategoria = "";
-                            break;
-                        }
-                    }
-                    //Si la categoria no existe se agrega
-                    if(!existe){
-                        sys.altaCategoria(nuevaCategoria);
-                        txtNombre.setText("");
-                        lbMensaje.setForeground(Color.white);  //texto en rojo
-                        lbMensaje.setBackground(colorOK);
-                        lbMensaje.setText(" Categoría \""+nuevaCategoria +"\" ingresada. OK");//
-                        lbMensaje.setOpaque(true);
-                        txtNombre.setBorder(bordeDefault); //Pone el borde con sus valores por default
-                        nuevaCategoria = "";
-                    }
-                } catch (Exception e) {
-                    JOptionPane.showMessageDialog(null, "Se produjo un error al intentar ingresar la nueva categoría.", "Alta de Categoría", JOptionPane.WARNING_MESSAGE);
-                }      
-            }else if(nuevaCategoria.equals("")){
-                lbMensaje.setText(" El campo nombre está vacío");//mensaje de error al adminstrador
-                lbMensaje.setBackground(colorError);
-                lbMensaje.setOpaque(true);
-                lbMensaje.setForeground(Color.WHITE);  //texto en rojo
-                txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo
-            }else if(nuevaCategoria.length() > 30){//Cheque el largo del campo
-                lbMensaje.setText(" El nombre excede los 30 caracteres");//mensaje de error al adminstrador
-                lbMensaje.setBackground(colorError);
-                lbMensaje.setOpaque(true);
-                lbMensaje.setForeground(Color.WHITE);  //texto en rojo
-                txtNombre.setBorder(BorderFactory.createLineBorder(colorError, 1));//color del borde rojo
+            //Si la categoria supera la validacion la ingresa
+        if (validarCategoria()) {
+            try {
+                sys.altaCategoria(nuevaCategoria);
+                txtNombre.setText("");
+                cambiarColoresOK();
+                nuevaCategoria = "";
+            } catch (Exception e) {
+                JOptionPane.showMessageDialog(null, (String) e.getMessage(), "Error:", JOptionPane.ERROR_MESSAGE);
             }
-            btnAceptar.requestFocus();
-        }else if(evt.getKeyCode() == KeyEvent.VK_TAB){
-            btnAceptar.requestFocus();//Al presionar tabulador cambia el foco al boton aceptar
-            System.out.println("Hola mundo");
         }
+        }    
     }//GEN-LAST:event_txtNombreKeyPressed
 
     private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing