Javascript: Semikolon in Regexp

bick-fm

42!
ID: 333985
L
6 Januar 2009
353
16
Hallo, ich habe folgendes Problem:
Ich habe eine kleine Liste von Regexps, um damit einen Text auswerten zu können, hier mal ein Auszug:

Code:
function foobar(text){
	regexp = [
		[/([\n ])Romeo, (.*).\n/g,'$1Romulus\n'],
		[/([\n ])Julia, (.*).\n/g,'$1Remus\n']
	];
	for (var i in regexp) text=text.replace(regexp[i][0],regexp[i][1]);

Nun will ich aber anstatt "Romulus" bzw. "Remus" gerne "Romulus;"/"Remus;" reinschreiben. Wenn ich nun aber
Code:
[/([\n ])Julia, (.*).\n/g,'$1Remus;\n']
schreibe, dann gibt er mir nur eine Leerzeile mehr aus. Auch quoten kann ich das nicht.

Weiß jemand wie das geht?

Liebe Grüße,
bick-fm
 
Bei mir geht das mit dem ";" anfügen :-?

Mein Test-Code:
HTML:
<script language="JavaScript">
function foobar(text)
{
	regexp = [
		[/([\n ])Romeo, (.*).\n/g,'$1Romulus;\n'],
		[/([\n ])Julia, (.*).\n/g,'$1Remus;\n']
	];
	for (var i in regexp)
	{
		text=text.replace(regexp[i][0],regexp[i][1]);
	}
	return text;
}
document.write("<pre>"+
	foobar(	 "Titel\n"
		+"Romeo, Satz 1\n"
		+"Julia, Satz 2\n"
		+"Romeo, Satz 3\n"
		+"Julia, Satz 4\n"
		+"Ende"
	)
);
</script>

Raus kommt:
Titel
Romulus;
Remus;
Romulus;
Remus;
Ende

Beim Original-Regexp ohne Semikolon kommt das Gleiche, eben nur ohne Semikolon raus.
 
Hmm, so geht's bei mir auch, es liegt an meiner Ausgabe, ich lass es in ein Textfeld schreiben:

Code:
if (typeof "out"=='string') 
		document.getElementById("out").innerHTML=code;

Kann ich da ein Semikolon reinschreiben?
 
Hmm, so geht's bei mir auch, es liegt an meiner Ausgabe, ich lass es in ein Textfeld schreiben:
HTML:
<html>
<body>
<textarea id="out"></textarea>
<script language="JavaScript">
function foobar(text) {
   regexp = [ [/([\n ])Romeo, (.*).\n/g,'$1Romulus;\n'], [/([\n ])Julia, (.*).\n/g,'$1Remus;\n'] ];
   for (var i in regexp) {
      text=text.replace(regexp[i][0],regexp[i][1]);
   }
   return text;
}

document.getElementById('out').innerHTML = "<pre>"+ foobar( "Titel\n" +"Romeo, Satz 1\n" +"Julia, Satz 2\n" +"Romeo, Satz 3\n" +"Julia, Satz 4\n" +"Ende") ;
</script>
</body>
</html>
... funktioniert bei mir reibungslos ;).

Schau dir doch mal jQuery oder Prototype an - vereinfacht das Leben ungemein.
 
Welchen Sinn hat dein if-Konstrukt? Der String "out" ist immer vom Typ String :ugly:

Wo möchstest du denn das Semikolon einfügen? Am Ende?

PHP:
    document.getElementById('out').innerHTML = code + ';';

Greetz

paddya
 
Wo möchstest du denn das Semikolon einfügen? Am Ende?
Lies dir doch erstmal den Thread durch, ehe du so eine Frage stellst ... besser gesagt den Code, den er veröffentlicht hat :roll:.

Er möchte "Romeo, " und "Julia, " in 'Romulus;' resp. 'Remus;' umwandeln - und nicht nur ein einziges Semikolon am Ende des Strings einfügen ;).
 
@paddya: Das Semikolon ist im String enthalten, es wird nur nicht so ausgegeben, wie ich es möchte, sprich mit Semikolon, das Semikolon wird anscheinend irgendwie falsch interpretiert.

@raven: Ohne das <pre> am Anfang funktioniert es, vielen Dank.