diff --git a/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java b/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java
index fdc6268d86605e08f6e704596bf0f9248b31c8a3..7b5da65d26273c2377a32eee3b989c047e8b3d41 100644
--- a/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java
+++ b/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java
@@ -72,7 +72,8 @@ public final class ValidatorUtils
      * @return <code>null</code> if given <var>pattern</var> is also <code>null</code>.
      * @throws PatternSyntaxException if the expression's syntax is invalid.
      */
-    public final static IValidator<String> createPatternValidator(final String[] patterns)
+    public final static IValidator<String> createCaseInsensitivePatternValidator(
+            final String[] patterns)
     {
         assert patterns != null : "Unspecified patterns.";
         final int length = patterns.length;
@@ -81,30 +82,31 @@ public final class ValidatorUtils
             case 0:
                 return null;
             case 1:
-                return createPatternValidator(patterns[0]);
+                return createCaseInsensitivePatternValidator(patterns[0]);
             default:
                 final CompositeValidator<String> validator = new CompositeValidator<String>();
                 for (final String pattern : patterns)
                 {
-                    validator.addValidator(createPatternValidator(pattern));
+                    validator.addValidator(createCaseInsensitivePatternValidator(pattern));
                 }
                 return validator;
         }
     }
 
     /**
-     * Creates a <code>IValidator</code> based on the given pattern.
+     * Creates a case insensitive <code>IValidator</code> based on the given pattern.
      * 
      * @return <code>null</code> if given <var>pattern</var> is also <code>null</code>.
      * @throws PatternSyntaxException if the expression's syntax is invalid.
      */
-    public final static IValidator<String> createPatternValidator(final String pattern)
+    public final static IValidator<String> createCaseInsensitivePatternValidator(
+            final String pattern)
     {
         if (pattern == null)
         {
             return null;
         }
-        final Pattern regEx = Pattern.compile(convertToRegEx(pattern));
+        final Pattern regEx = Pattern.compile(convertToRegEx(pattern), Pattern.CASE_INSENSITIVE);
         return new RegExValidator(regEx);
     }
 
diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java
index 7f8173ebb2d7e958cb999f6e1f3ae7b56e503ee4..0237e1537cdb245ede60c0abca8a24e63cd1e7d2 100644
--- a/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java
+++ b/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java
@@ -17,6 +17,7 @@
 package ch.systemsx.cisd.common.collections;
 
 import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
 import static org.testng.AssertJUnit.assertNull;
 import static org.testng.AssertJUnit.assertTrue;
 
@@ -91,18 +92,35 @@ public final class ValidatorUtilsTest
     }
 
     @Test
-    public final void testCreatePatternValidator()
+    public final void testCreateStarPatternValidator()
     {
-        assertNull(ValidatorUtils.createPatternValidator(ArrayUtils.EMPTY_STRING_ARRAY));
-        IValidator<String> validator = ValidatorUtils.createPatternValidator("he*");
-        assert validator.isValid("he");
-        assert validator.isValid("hello");
-        assert validator.isValid("hullo") == false;
-        validator = ValidatorUtils.createPatternValidator("he?lo");
-        assert validator.isValid("helo") == false;
-        assert validator.isValid("hello");
-        assert validator.isValid("he lo");
-        assert validator.isValid("he.lo");
-        assert validator.isValid("he\nlo") == false;
+        assertNull(ValidatorUtils
+                .createCaseInsensitivePatternValidator(ArrayUtils.EMPTY_STRING_ARRAY));
+        IValidator<String> validator = ValidatorUtils.createCaseInsensitivePatternValidator("he*");
+        assertTrue(validator.isValid("he"));
+        assertTrue(validator.isValid("hello"));
+        assertFalse(validator.isValid("hullo"));
+    }
+
+    @Test
+    public final void testCreateQuestionMarkPatternValidator()
+    {
+        IValidator<String> validator =
+                ValidatorUtils.createCaseInsensitivePatternValidator("he?lo");
+        assertFalse(validator.isValid("helo"));
+        assertTrue(validator.isValid("hello"));
+        assertTrue(validator.isValid("he lo"));
+        assertTrue(validator.isValid("he.lo"));
+        assertFalse(validator.isValid("he\nlo"));
+    }
+
+    @Test
+    public final void testPatternValidatorIsCaseInsensitive()
+    {
+        IValidator<String> validator = ValidatorUtils.createCaseInsensitivePatternValidator("he*");
+        assertTrue(validator.isValid("HELL"));
+        assertTrue(validator.isValid("HeLL"));
+        assertTrue(validator.isValid("hell"));
+        assertFalse(validator.isValid("HiLL"));
     }
 }
\ No newline at end of file