[JAVA] regex
(STRING).matches("[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2,4}")
ik wil bijvoorbeeld: 1-1-14 10-10-12 of 1-12-1999
hoe kan ik dit oplossen?
Scripttaal aan titel toegevoegd aangezien Java niet een taal is waar op dit forum veel vragen over komen.[/modedit]
Gewijzigd op 21/03/2014 17:21:49 door Wouter J
Om welke taal gaat het hier?
Gewijzigd op 21/03/2014 16:50:46 door siep de Veer
Matcht alles; matcht nooit; matcht alleen schrikkeldagen....
dus
if(!STRING.matches("[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2,4}")){
//dan hier
}
Toevoeging op 24/03/2014 09:24:23:
ik zou graag een regex willen die alle datum soorten weg filtert
dus
if(!STRING.matches("[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2,4}")){
//dan hier
}
Als ik bij de garage kom en ik stel dat ik mijn auto wil gebruiken om naar mijn werk te rijden.
Wat is dan hun reactie?
Als je daar zegt dat je olie op is, wordt het duidelijker.
Als je erbij vertelt dat je in het centrum van Den Haag werkt, ligt het meer aan een wegafsluiting.
---
zo geef jij niet aan wat er in gaat en wat er wel of niet gebeurt.
Als jij 2014/01/01 aanbiedt als datum, of 15 datums in 1 regel + 1 foute datum ;
etc
dus de STING word gevuld vanuit de database met bijvoorbeeld '78test' dan komt die in de if
en omdat dit geen datum is mag deze wel in de if
komt '1-1-2010' in de STRING
dan mag deze niet in de IF omdat het matcht met de regex
maar mijn vraag is nu
de huidige regex werkt niet
"[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2,4}")
hoe kan ik deze maken zodat die wel klopt
Gewijzigd op 24/03/2014 09:43:20 door siep de Veer
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html
Jij wilt "ergens in de string" en niet "hele string"
.* voor en .* achter de regex zou kunnen helpen
Quote:
s.matches("regex")
Evaluates if "regex" matches s. Returns only true if the WHOLE string can be matched.
Evaluates if "regex" matches s. Returns only true if the WHOLE string can be matched.
Jij wilt "ergens in de string" en niet "hele string"
.* voor en .* achter de regex zou kunnen helpen
ja klopt ergens in de sting
wel?
onderstaande werken niet:
".*[0-9]{1,2}-[0-9]{1,2}-[0-9]{1,2,4}.*"
".*([0-9]{1,2})(-)([0-9]{1,2})(-)([0-9]{1,2,4}).*"
".*(\\d{1,2}-\\d{1,2}-\\d{1,2,4}).*"
".*(\\d{1,2}(-)\\d{1,2}(-)\\d{1,2,4}).*"
Toevoeging op 24/03/2014 10:18:48:
en kom je nu juist steeds wel of niet in de if of else uit?
Toevoeging op 24/03/2014 10:23:18:
ik krijg een exception
Toevoeging op 24/03/2014 10:35:34:
ik heb het opgelost
dit moet de regex worden
".*(\\d{1,2}-\\d{1,2}-\\d{2,4}).*"
op het moment dat ik tussen de {} 3 getallen zet dan gaat het fout
dus dan maak ik gewoon 2 regex.
@Ivo P Bedankt voor de hulp!
Gewijzigd op 24/03/2014 10:25:40 door siep de Veer
Toevoeging op 24/03/2014 11:14:32:
van 3 ook, dus zou het dan niet zijn
".*(\\d{1,2}-\\d{1,2}-\\d{2}(\\d{2}?).*'
zodat het jaartal sowieso uit 2 cijfers bestaat, en optioneel uit nog 2 erachter? (vanwege de ? )