Waarschijnlijk heb je dan de slash-versie van regex gebruikt, dan moet je de slashes in de expression ook nog escapen uiteraard (aangezien de slashes aan t begin en aan t einde delimiters zijn).
In Ruby:
Code:
> regex = /(?:\d{2}\/)?\d{2}\/(\d{2,4})/
=> /(?:\d{2}\/)?\d{2}\/(\d{2,4})/
> regex.match("01/02/2000")
=> #<MatchData "01/02/2000" 1:"2000">
> regex.match("03/05/00")
=> #<MatchData "03/05/00" 1:"00">
> regex.match("04/00")
=> #<MatchData "04/00" 1:"00">
In Javascript (NodeJS):
Code:
> var regex = /(?:\d{2}\/)?\d{2}\/(\d{2,4})/
undefined
> regex.exec("01/02/2000")
[ '01/02/2000',
'2000',
index: 0,
input: '01/02/2000' ]
> regex.exec("03/05/00")
[ '03/05/00',
'00',
index: 0,
input: '03/05/00' ]
> regex.exec("04/00")
[ '04/00',
'00',
index: 0,
input: '04/00' ]
Goeie resources om Regex te leren…
Regular-Expressions.info - Regex Tutorial, Examples and Reference - Regexp Patterns
Mastering Regular Expressions, 3rd Edition*-*O'Reilly Media
Regular Expressions Cookbook*-*O'Reilly Media
Voor de volledigheid nog eens de expression uit mekaar halen:
De haakjes maken er een groep van, da's zowel nodig voor die "?:" aan t begin en da vraagteken op t einde.
\d is een cijfer (digit)
{2} twee van hetgeen ervoor staat, in dit geval dus twee cijfers
\/ is gewoon een slash, maar die escapen we omdat er een slash aan t begin en t einde van de expression staat
Dan advanced stuff:
Het vraagteken op het einde zegt: het is optioneel (om je 04/2000) te dekken. Dus die eerste groep mag, maar moet er nie staan
Het "?:" aan t begin zegt: ik maak met m'n haakjes een groep, en normaal gezien zou je die als groep in het resultaat opnemen, maar k wil nie da je dat doet.
Twee cijfers met een slash derachter (zelfde als vorige, maar dan simpeler: niet optioneel en hoeft ook geen groep te zijn.
Een groep met cijfers (analoog aan eerste), die moet er staan. die "{2,4}" zegt: met twee OF vier cijfers.
Regex lijkt heel cryptisch, maar je moet het gewoon beetje bij beetje opbouwen. Is enorm krachtig als je niet-letterlijke data maar wel een patroon moet matchen of vervangen. Best ook zorgen dat je een editor hebt die syntax coloring kan doen, anders is het zeer moeilijk om alles uit mekaar te houden.