Regex komt overeen met cijfers, komma en puntkomma?

Wat is een reguliere expressie die overeenkomt met een tekenreeks die alleen de cijfers 0 tot en met 9, een komma en een puntkomma bevat? Ik wil het als volgt in Java gebruiken:

word.matches("^[1-9,;]$") //Or something like that...

Ik ben nieuw in reguliere expressies.


Antwoord 1, autoriteit 100%

Je hebt het bijna, je hebt gewoon 0 weggelaten en de kwantor vergeten.

word.matches("^[0-9,;]+$")

Antwoord 2, autoriteit 50%

Je bent er voor 90%.

^[0-9,;]+$

Beginn met de karaat ^geeft een begin van een regel aan.

De [geeft een tekenset aan

De 0-9geeft de tekens 0 tot en met 9 aan, de komma ,geeft een komma aan en de puntkomma geeft een ;aan.

De afsluitende ]geeft het einde van de tekenset aan.

De plus +geeft aan dat een of meer van het “vorige item” aanwezig moet zijn. In dit geval betekent dit dat u een of meer van de tekens in de eerder gedeclareerde tekenset moet hebben.

De dollar $geeft het einde van de regel aan.


Antwoord 3, autoriteit 7%

Probeer word.matches("^[0-9,;]+$");


Antwoord 4, autoriteit 5%

word.matches("^[0-9,;]+$");je was er bijna


Antwoord 5, autoriteit 2%

Je huidige regex komt maar met 1 teken overeen. je hebt * (inclusief lege tekenreeks) of + (minstens één) nodig om meerdere tekens en cijfers te matchen, heb een sneltoets: \d (nodig \\ in een tekenreeks).

word.matches("^[\\d,;]+$") 

De Pattern-documentatie is redelijk goed: http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html

U kunt uw regexps ook online uitproberen op:
http://www.regexplanet.com/simple/index.html


Antwoord 6

boolean foundMatch = Pattern.matches("[0-9,;]+", "131;23,87");

Other episodes