Index: trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 19170)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java	(revision 19172)
@@ -417,4 +417,6 @@
                     } else if (i instanceof CheckGroup) {
                         for (Check c : ((CheckGroup) i).checks) {
+                            if (!"none".equals(c.match))
+                                minData.add(c);
                             addPresetValue(c);
                         }
@@ -422,5 +424,5 @@
                 }
                 if (!minData.isEmpty()) {
-                    presetIndex .put(p, minData);
+                    presetIndex.put(p, minData);
                 }
             }
@@ -855,5 +857,11 @@
     private static boolean primitiveInRegions(IPrimitive primitive, Collection<String> regions, boolean excludeRegions) {
         if (primitive instanceof INode) {
-            return latLonInRegions((INode) primitive, regions) == excludeRegions;
+            // 4 options:
+            // In Region    | excluding region  | expected
+            // true         | false             | true
+            // true         | true              | false
+            // false        | false             | false
+            // false        | true              | true
+            return latLonInRegions((INode) primitive, regions) != excludeRegions;
         } else if (primitive instanceof IWay) {
             return ((IWay<?>) primitive).getNodes().stream().anyMatch(n -> primitiveInRegions(n, regions, excludeRegions));
