BromsMedlem sedan sep. 2002190 inlägg
Jag har en pattern som ser ut såhär:
Pattern p = Pattern.compile("^[A-ZÅÄÖa-zåäö0-9 ]*$");
Jag skulle dock vilja att den även tar med + - och . (punkt)
Jag är inte så insatt i det där med hur escapetecket används i ett pattern, någon som har lust att rycka in?
Mvh E
spangoMedlem sedan juni 20006 147 inlägg
Pattern p = Pattern.compile("^[A-ZÅÄÖa-zåäö0-9 \\-\\+\\.]*$");
Det är lite mögigt med regexpar i Java, eftersom specialtecken som plus/minus/punkt escapeas (försök stava det bättre själv ;) ) med backslash, men för att få in en backslash i en sträng måste man i sin tur escapea det med en backslash.
nitro2k01Medlem sedan aug. 20037 630 inlägg
Till att börja med så måste du escapea tecknen +, - och . eftersom de används som nyckelord inom regexp. Och du har antgligen prövat:
Pattern p = Pattern.compile("^[A-ZÅÄÖa-zåäö0-9 [s]\+\-\.[/s]]*$");
Javas strängar är dock också escapeade. För att strängen ska få innehållet \ så måste du skriva \\. Så du måste skriva \\+\\-\\. så kommer strängen att få innehållet \+\-\. vilket är vad du vill i detta fall. Jag tycker övrigen att det verkar fel att använda kvantifikatorn * i detta fall, då den även matchar en tom sträng. Du kan också byta ut a-zA-Z0-9 mot \w (Eller snarare \\w som sagt) för att spara lite plats. Så:
Pattern p = Pattern.compile("^[\\wÅÄÖåäö\\.\\+\\- ]+$");
BromsMedlem sedan sep. 2002190 inlägg
tack fungerade kanoners kanon :)
LimeMedlem sedan sep. 2001837 inlägg
Hmm... blir det inte bara whitespaces kvar med det uttrycket??
BromsMedlem sedan sep. 2002190 inlägg
Jag måste bara fråga en annan sak om just reguljära uttryck, återaccepterar svaret däruppe när detta har besvarats:
Om vi tar ett exempel: Pattern p = Pattern.compile("[0-9]{6}-[0-9]{4}+$");
1. Skillnad mellan {4}+$"); , {4}*$"); och {4}$");?
2. Varför inleds vissa uttryck med ^?
3. Vad betyder $?
Ang den första frågan så såg jag ingen skillnad på resultatet om jag tog bort plustecknet?
Mvh E
spangoMedlem sedan juni 20006 147 inlägg
RTFM ;)
x{4} betyder "x fyra gånger"
x+ betyder "x en eller fler gånger"
x* betyder "x noll eller fler gånger"
^ betyder "början på strängen"
$ betyder "slutet på strängen"
[0-9]{6}-[0-9]{4}+$ betyder alltså "en sekvens på sex siffror, sen ett streck, sen en eller flera sekvenser om fyra siffror, följt av strängens slut".
Alltså kan [0-9]{4}+ motsvara "1234" eller "12345678", men inte "123" eller "123456".
BromsMedlem sedan sep. 2002190 inlägg
tackar så hjärtligt, borde ha kollat upp saker och ting mer noggrant :D