RegExpr - falsch interpretiert
Peete
- javascript
0 Andreas Lindig0 MudGuard0 Andreas Lindig0 MudGuard
0 Peete0 Ashura
Hi, habe ein bisschen mit den regulären Ausdrücken rumgespielt und komme dabei zu folgendem Ergebnis:
<script type="text/javascript" language="JavaScript">
var re1 = /[a-z]?/;
var re2 = /\d{5}/;
var re3 = /0|-?[1-9]\d*/;
document.write(re1.test("jk") + "<br />");
document.write(re2.test("123456") + "<br />");
document.write(re3.test("2jk") + "<br /><br />");
var re4 = new RegExp("\d{5}");
document.write(re4.test("12343") + "<br />");
</script>
Die Ausgabe lautet:
true
true
true
false
Hab ich die regExps falsch verstanden oder was stimmt hier nicht?
Danke für eure Hilfe,
Peete
Hallo Peete,
jo, sieht doch ganz gut aus. Bei re4 bekommst Du auch true, wenn Du RegExp("\d{5}") schreibst. re3 finde ich etwas befremdlich, weil man Alternativen eigentlich in Klammer setzt: /(0|-?)[1-9]\d*/. Ansonsten: was ist denn Dein Problem?
Ich habe übrigens regExp für JS mal zusammengeschrieben (mit Testmöglichkeit).
Gruß, Andreas
Danke schon mal sehr für eure Hilfe.
Das ^..$ wird es wohl sein, hab ich ganz vergessen. Ich war etwas perplex, weil ich das direkt aus einem Buch hatte (JavaScript von GallileoPress) und da hat der Autor wohl was vergessen...
Ich schau mir gleich die Beispiele nochmal an!
Besten Dank
Peete
Ein sehr schönes Tutorial, super !
Viele Grüße
Hi,
<script type="text/javascript" language="JavaScript">
var re1 = /[a-z]?/;
document.write(re1.test("jk") + "<br />");
"jk" enthält wie gefordert 0 oder 1 Kleinbuchstaben ==> true
var re2 = /\d{5}/;
document.write(re2.test("123456") + "<br />");
"123456" enthält 5 Ziffern ==> true
var re3 = /0|-?[1-9]\d*/;
document.write(re3.test("2jk") + "<br /><br />");
Der String enthält eine Ziffer ==> true
Willst Du Deinen Regex vielleicht am Stringanfang und -ende verankern? ^ und $ dürften helfen.
var re4 = new RegExp("\d{5}");
document.write(re4.test("12343") + "<br />");
\d wird schon beim Einlesen des Strings zu _einem_ Zeichen - so wie \t zu _einem_ Zeichen (Tabulator) wird.
Bei \d ist mir aber die Bedeutung nicht bekannt.
"12343" enthält nicht fünfmal dieses Zeichen \d ==> false
cu,
Andreas
Hallo Andreas,
"12343" enthält nicht fünfmal dieses Zeichen \d
doch, fünmal \d, aber eben nicht fünfmal d
==> false
mach \d daraus und es ergibt true.
Gruß, Andreas
Hi,
Hallo Andreas,
"12343" enthält nicht fünfmal dieses Zeichen \d
doch, fünmal \d,
Nein, es enthält nicht 5mal das Zeichen \d.
Zu dem Zeitpunkt, zu dem der Regex ausgewertet wird, ist weder der \ noch das d noch vorhanden.
cu,
Andreas
\d wird schon beim Einlesen des Strings zu _einem_ Zeichen - so wie \t zu _einem_ Zeichen (Tabulator) wird.
Bei \d ist mir aber die Bedeutung nicht bekannt.
Ich versteh nicht ganz was Du meinst, muss ich in RegExp alles doppelt backslashen ? \d?
Hallo Peete.
Ich versteh nicht ganz was Du meinst, muss ich in RegExp alles doppelt backslashen ? \d?
Mein Linktipp für das allgemeine Verständnis. :)
Gruß, Ashura