Siechfred: Regular Expression für ein Datum

Beitrag lesen

Hell-O!

Struppi berichtet afais von sowas.
Ich weiß auch nicht wie ich die Fehler anders deuten soll:
Fehler: unterminated character class

Den es sinnigerweise nur bei string.replace gibt. Scheinbar verwirrt Javascript (und nur Javascript!) der zweite Slash, der nach dort geltender Lesart den RegExp beendet. Leider scheint JS keinen anderen Begrenzer zu akzeptieren. Ich habe das mal kurz getestet:

var foo = window.prompt('Foo sei ...');  
// hier muss nichts maskiert werden:  
var re = new RegExp('^[0-9][-./][0-9]$');  
if(re.test(foo)) alert(foo+' passt');  
else alert(foo+' passt nicht');  
// hier muss zwingend der Slash maskiert werden:  
foo = foo.replace(/[-.\/]/, '#');  
alert(foo);

Zusammengefasst scheint es zu bedeuten:

Wird ein neues RegExp-Objekt erzeugt, verhält sich die Zeichenklasse wie von mir aus der Perl-Welt erwartet. Sobald man den RegExp ungequoted in einem replace, match oder search notiert bzw. die JS-eigene Automatik zur Erzeugung eines Regulären Ausdrucks (var re = /whatever/;) nutzt, ist jeder Slash, der kein Begrenzer ist, zumindest in JS zwingend zu maskieren.

Aber vielleicht ergeben eure Tests ja noch was ganz anderes.

Siechfred