Index: trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 9856)
+++ trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.groovy	(revision 9857)
@@ -433,3 +433,15 @@
         assert mc.getCascade(Environment.DEFAULT_LAYER).get("max_split", -777f, Float.class) == 56
     }
+
+    @Test
+    public void testTicket12549() throws Exception {
+        def condition = getParser("[name =~ /^(?i)(?u)fóo\$/]").condition(Condition.Context.PRIMITIVE)
+        assert condition.applies(new Environment(OsmUtils.createPrimitive("way name=fóo")))
+        assert condition.applies(new Environment(OsmUtils.createPrimitive("way name=fÓo")))
+        condition = getParser("[name =~ /^(\\p{Lower})+\$/]").condition(Condition.Context.PRIMITIVE)
+        assert !condition.applies(new Environment(OsmUtils.createPrimitive("way name=fóo")))
+        condition = getParser("[name =~ /^(?U)(\\p{Lower})+\$/]").condition(Condition.Context.PRIMITIVE)
+        assert condition.applies(new Environment(OsmUtils.createPrimitive("way name=fóo")))
+        assert !condition.applies(new Environment(OsmUtils.createPrimitive("way name=fÓo")))
+    }
 }
