diff --git a/ansible_testing/modules.py b/ansible_testing/modules.py
index 32bebf573cd..67af30ea734 100644
--- a/ansible_testing/modules.py
+++ b/ansible_testing/modules.py
@@ -373,12 +373,28 @@ class PythonPackageValidator(Validator):
             self.errors.append('Ansible module subdirectories must contain an '
                                '__init__.py')
 
+def re_compile(value):
+    """
+    Argparse expects things to raise TypeError, re.compile raises an re.error
+    exception
+
+    This function is a shorthand to convert the re.error exception to a
+    TypeError
+    """
+
+    try:
+        return re.compile(value)
+    except re.error as e:
+        raise TypeError(e)
+
 
 def main():
     parser = argparse.ArgumentParser()
     parser.add_argument('modules', help='Path to module or module directory')
     parser.add_argument('-w', '--warnings', help='Show warnings',
                         action='store_true')
+    parser.add_argument('--exclude', help='Regex exclusion pattern',
+                        type=re_compile)
     args = parser.parse_args()
 
     args.modules = os.path.abspath(args.modules.rstrip('/'))
@@ -387,7 +403,10 @@ def main():
 
     # Allow testing against a single file
     if os.path.isfile(args.modules):
-        mv = ModuleValidator(os.path.abspath(args.modules), root=args.modules)
+        path = os.path.abspath(args.modules)
+        if args.exclude and args.exclude.search(path):
+            sys.exit(0)
+        mv = ModuleValidator(path, root=args.modules)
         mv.validate()
         exit.append(mv.report(args.warnings))
         sys.exit(sum(exit))
@@ -400,6 +419,8 @@ def main():
             if root == args.modules and dirname in BLACKLIST_DIRS:
                 continue
             path = os.path.join(root, dirname)
+            if args.exclude and args.exclude.search(path):
+                continue
             pv = PythonPackageValidator(os.path.abspath(path),
                                         root=args.modules)
             pv.validate()
@@ -407,6 +428,8 @@ def main():
 
         for filename in files:
             path = os.path.join(root, filename)
+            if args.exclude and args.exclude.search(path):
+                continue
             mv = ModuleValidator(os.path.abspath(path), root=args.modules)
             mv.validate()
             exit.append(mv.report(args.warnings))