diff --git a/include/class_tests.inc b/include/class_tests.inc
index 2dc73fdf88cad21f6b6555f86b64dacc2ff8bcc0..93d90912311a82776abe996c6b657a31aa96bb2c 100644
--- a/include/class_tests.inc
+++ b/include/class_tests.inc
@@ -166,7 +166,7 @@ class tests
    */
   public static function is_mac($mac)
   {
-    return preg_match("/^[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$/i", $mac);
+    return preg_match('/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/', $mac);
   }
 
 
diff --git a/include/simpleplugin/class_helpersAttribute.inc b/include/simpleplugin/class_helpersAttribute.inc
index e4211e8a5280e4af5395799054c88b0794441aaf..f2538d0120702d817b1c79c7b783980dc5b1b671 100644
--- a/include/simpleplugin/class_helpersAttribute.inc
+++ b/include/simpleplugin/class_helpersAttribute.inc
@@ -118,16 +118,14 @@ class MacAddressAttribute extends StringAttribute
 {
   protected $trim = TRUE;
 
-  function setValue ($value)
+  function __construct ($label, $description, $ldapName, $required = FALSE, $defaultValue = '', $acl = '')
   {
-    return parent::setValue(strtolower($value));
+    parent::__construct($label, $description, $ldapName, $required, $defaultValue, $acl, '/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/', '5E:FF:56:A2:AF:15');
   }
 
-  function validate ()
+  function setValue ($value)
   {
-    if (!tests::is_mac($this->value)) {
-      return msgPool::invalid($this->getLabel(), $this->value);
-    }
+    return parent::setValue(strtolower($value));
   }
 }