Punkt im RegularExpression String?

ich möchte folgendes machen:
BOOres= IPText.matches("[0123456789]*.[0123456789]*.[0123456789]*.[0123456789]*");
ich will damit überprüfen ob ein string in der form „123.456.789.123“ ist. (müssen nicht umbedingt 3er pakete sein kann auch mehr oder weniger sein).

mit java.util.regex.Pattern.DOT_ALL setzt man ob der . als beliebige zeichenfolge gewertet werden soll, standartmäßig ist das eingeschalten. ich brauch aber den punkt als punkt in dem RexEx STring und nicht als beliebige zeichenfolge.

mfg
Alexander Pichlbauer

Reine Vermutung:
Vermutlich musst du den Punkt escapen,
also . muss in den String rein, da \ aber in Java schon selbst der Escape Character ist, muss es vermutlich \. heißen

IPText.matches("[0123456789]*\.[0123456789]*\.[0123456789]*\.[0123456789]*");

so wirklich stimmt das Ding ja nicht (wie du schon selbst anmerkst), unter obengenannten Muster kann dir auch einer

423423141321432.4321143214321243.41234123143241234123.24131423123441232134 als IP Adresse verkaufen

Grüße
Bruno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

tip

Reine Vermutung:
Vermutlich musst du den Punkt escapen,

Richtig vermutet :smile: An regulären Ausdrücken hab ich mich letztens auch mal versucht.
Den IP-Adressen-Test würde ich jetzt aus dem Kopf so machen:

IPText.matches("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}");

( [0-9]{1,3} --> Ziffer 0-9 1-3 mal wiederholen )
Wie gesagt nicht getested.

Gruß
Jochen

IPText.matches("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}");

Sollte gehen, wobei du mit nem regulären Ausdruck nie allein hinkommen wirst, wenn die IP Adresse auch wirklich sinnvoll sein soll (z.b. nicht 999.999.999.999) :smile:

Dann wohl eher:

IPText.matches("([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])");

p.s. habe ich auch nicht getestet - könnte aber klappen.

Gültige Zeichenketten:

einstellige:
0.0.0.0
bis dreistellig:
255.255.255.255

Gruß Christian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

IPText.matches("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}");

Sollte gehen, wobei du mit nem regulären Ausdruck nie allein
hinkommen wirst, wenn die IP Adresse auch wirklich sinnvoll
sein soll (z.b. nicht 999.999.999.999) :smile:

Dann wohl eher:

IPText.matches("([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])");

passt wohl noch nicht ganz, da du bei 3-stelligen Zahlen für die letzten beiden Ziffern nur Werte bis 5 zulässt (199.199.199.199 wäre aber eigentlich OK), aber ich denke prinzipiell hast du schon recht, man bekommts mit regulären Ausdrücken schon hin, es fehlen halt noch ein Paar ODER-Verbindungen:

([0-9]{1,2}|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]\\. ...

Ist ebenfalls nicht getestet.

gruß
Heavy

IPText.matches("([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])\.([0-9]{1,2}|[1-2][0-5][0-5])");

passt wohl noch nicht ganz, da du bei 3-stelligen Zahlen für
die letzten beiden Ziffern nur Werte bis 5 zulässt
(199.199.199.199 wäre aber eigentlich OK), aber ich denke
prinzipiell hast du schon recht, man bekommts mit regulären
Ausdrücken schon hin, es fehlen halt noch ein Paar
ODER-Verbindungen:

([0-9]{1,2}|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]\. …

Okay recht hast Du
dann aber:

(((1)?[0-9]{1,2})|(2([0-4][0-9])|(5[0-5])))\\. ...

Das könnte jetzt klappen :smile:

Christian

(ohne Gewähr)

Ähm…
Hiho - mag ja eure rege Unterhaltung nicht stören… aaaaber:

http://www.regexlib.com/

wollt ich nur gesagt haben *gg*

mfG,

J.P.Jarolim

1 „Gefällt mir“