Index: trunk/data/validator/numeric.mapcss
===================================================================
--- trunk/data/validator/numeric.mapcss	(revision 11640)
+++ trunk/data/validator/numeric.mapcss	(revision 12215)
@@ -218,2 +218,26 @@
   assertNoMatch: "node direction=anticlockwise"; /* both spellings are in use and even wiki uses both */
 }
+
+/* #14786 (should be safe to just remove the meters unit from the value) */
+*[ele][ele =~ /^-?[0-9]+(\.[0-9]+)? ?m$/] {
+  throwWarning: tr("{0} must be a numeric value, in meters and without units", "{0.key}");
+  fixAdd: concat("ele=", trim(replace(tag("ele"), "m", "")));
+  set .ele_is_fixable;
+  assertMatch: "node ele=12m";
+  assertMatch: "node ele=12 m";
+  assertNoMatch: "node ele=12km";
+  assertMatch: "node ele=12.1m";
+  assertMatch: "node ele=-12.1 m";
+  assertNoMatch: "node ele=12";
+  assertNoMatch: "node ele=high";
+}
+*[ele][ele !~ /^-?[0-9]+(\.[0-9]+)?$/]!.ele_is_fixable{
+  throwWarning: tr("{0} must be a numeric value, in meters and without units", "{0.key}");
+  assertNoMatch: "node ele=12m";
+  assertNoMatch: "node ele=12 m";
+  assertMatch: "node ele=12km";
+  assertNoMatch: "node ele=12.1m";
+  assertNoMatch: "node ele=-12.1 m";
+  assertNoMatch: "node ele=12";
+  assertMatch: "node ele=high";
+}
