Drive 3 5050 SMD RGB LEDs with 12v Lead-acid battery
Indeed there is too little voltage "headroom" for a linear voltage regulator.

I see several solutions:

1) The simplest solution is to just use a series resistor and give the resistor such a value that the current will be maximum (20 mA) at the highest battery voltage (let's say 14.5 V). So for three 3.5 V LEDs in series that would result in: 14.5 V - (3x3.5) = 4 V, 4 V / 20 mA = 200 ohms.
When the battery voltage is lower, the current will be less than 20 mA so the LEDs will be less bright. It depends on the LEDs how noticeable this is.

2) Same as 1 but instead of 3 LEDs in series, use 2 LEDs in series. That way more voltage will drop across the resistor and that will mean that the current will vary less over battery voltage. It will still vary but less. Note that this is of course less efficient as the total current will be larger as you will need more LED series circuits. But since the LED current is only 20 mA per circuit you're hardly loading the battery at all.

3) If you must have a fixed current, use a DCDC boost converter to boost the voltage up to for example 25 V, then you can even connect 6 LEDs in series, with a resistor of course. That Boost converter will regulate the output voltage to 25 V (or whatever you set it to but must be higher than highest battery voltage!) independent of the battery voltage.

Personally I would recommend option 1) as it is the simplest and will very likely be good enough.