Jag har tidskoder som jag skulle vilja formatera med inledande nollor om man inte har angivit det. Här är några exempel på hur jag vill att man ska kunna mata in och hur det ska rättas till:
1:2 blir 01:02
1:2:3 blir 01:02:03
1:2:3:4 blir 01:02:03:04 (max är tre kolon)
Fler exempel:
1:20 blir 01:20
01:2:30 blir 01:02:30
10:20:03:4 blir 10:20:03:04
function format_timecode($tc)
{
return preg_replace('/(:|^)(\\d)(?=:|$)/', '${1}0$2', $tc);
}
Den koden letar efter valfritt antal segment och lägger till en nolla vid behov. Ett segment består av början av strängen eller ett kolon, följt av exakt en nuffra, följt av slutet av strängen eller kolon. ?= "spolar tillbaka" matchningen så att två fält som behöver fixas som kommer efter varandra inte krånglar, typ 1:2:3:4 eftersom uttrycket annars hade ätit nästa fälts inledande kolon.
Uttrycket gör ingen validering i övrigt utan arbetar matchar bara enskilda fält, så en sträng med tusen fält eller något i stil med 1:bajs:3:4 kommer också fixas.
function format_timecode($tc)
{
return preg_replace('/(:|^)(\\d)(?=:|$)/', '${1}0$2', $tc);
}
Den koden letar efter valfritt antal segment och lägger till en nolla vid behov. Ett segment består av början av strängen eller ett kolon, följt av exakt en nuffra, följt av slutet av strängen eller kolon. ?= "spolar tillbaka" matchningen så att två fält som behöver fixas som kommer efter varandra inte krånglar, typ 1:2:3:4 eftersom uttrycket annars hade ätit nästa fälts inledande kolon.
Uttrycket gör ingen validering i övrigt utan arbetar matchar bara enskilda fält, så en sträng med tusen fält eller något i stil med 1:bajs:3:4 kommer också fixas.
Fett, funkade utmärkt. Tack båda!
Kan preg_replace('/(:|^)(\\d)(?=:|$)/', '${1}0$2', $tc); översättas till javascript också? Jag testade detta, men verkar inte funka: