Index: src/org/openstreetmap/josm/data/validation/OsmValidator.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 15456)
+++ src/org/openstreetmap/josm/data/validation/OsmValidator.java	(working copy)
@@ -267,13 +267,13 @@
             List<String> toRemove = new ArrayList<>();
 
             Iterator<Entry<String, String>> iter = ignoredErrors.entrySet().iterator();
-            Entry<String, String> last = iter.next();
+            String lastKey = iter.next().getKey();
             while (iter.hasNext()) {
-                Entry<String, String> entry = iter.next();
-                if (entry.getKey().startsWith(last.getKey())) {
-                    toRemove.add(entry.getKey());
+                String currKey = iter.next().getKey();
+                if (currKey.startsWith(lastKey) && sameCode(currKey, lastKey)) {
+                    toRemove.add(currKey);
                 } else {
-                    last = entry;
+                    lastKey = currKey;
                 }
             }
             toRemove.forEach(ignoredErrors::remove);
@@ -286,6 +286,23 @@
         }
     }
 
+    private static boolean sameCode(String key1, String key2) {
+        return extractCodeFromIgnoreKey(key1).equals(extractCodeFromIgnoreKey(key2));
+    }
+
+    private static String extractCodeFromIgnoreKey(String key) {
+        int lenCode = 0;
+
+        for (int i = 0; i < key.length(); i++) {
+            if (key.charAt(i) >= '0' && key.charAt(i) <= '9') {
+                lenCode++;
+            } else {
+                break;
+            }
+        }
+        return key.substring(0, lenCode);
+    }
+
     /**
      * Check if a error should be ignored
      * @param s The ignore group / sub group name
