• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Problem mit Regulären Ausdruck (match, replace)

ramshit

New member
Hallo liebe JS Community,

ich habe ein Problem mit dem Parsen eines Strings. Zur Erklärung: Das Script soll einen String aus einem externen Programm parsen und entsprechend formatiert angezeigt werden. Statt jedem "\\r\\n" soll ein <br> eingefügt werden, sodas ich den String nach dem Parsen mittels DOM Manipulation in einem DIV-Element "wohlgeformt" anzeigen kann. Ich habe verschiedene Tools genommen, welche mir die Syntax des Regulären Ausdrucks als richtig makiert haben. Ich weiß aber nicht warum JS ein Problem damit hat bzw. wo ich einen Fehler gemacht haben könnte.
Ich bekomme im Chrome immer den Fehler "Uncaught TypeError:undefined is not a function".
Mir kam schon die Idee auf dass er möglicherweise ein Problem mit replace hat und habe nur mal auf die \\r\\n gematched, was wiederum auch kein erfolg brachte. Ich bin mit meinem Latein ziemlich am Ende. Vielen Dank.

PS: Vielleicht kann man die Sache ja auch etwas eleganter lösen. Ich wäre hier für entsprechende Hinweise sehr dankbar.

HTML:
<!DOCTYPE html>
<html>
	<head>
		
		<script src="./javascript/jquery-1.8.3.js" type="text/javascript"></script>

		<script type="text/javascript">
		// string=websocket.payload.text == "{\"type\":\"answer\",\"attributes\":{\"from\":\"bub\",\"sdp\":\"v=0\\r\\no=- 5889535793452741171 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE audio video\\r\\na=msid-semantic: WMS dXBxUsGg3LKlBaM9wIfmN1vRShcncgo4Eg5e\\r\\nm=audio 63240 RTP/SAVPF 111 103 104 0 8 106 105 13 126\\r\\nc=IN IP4 192.168.200.2\\r\\na=rtcp:1 IN IP4 0.0.0.0\\r\\na=candidate:3025050341 1 udp 2113937151 192.168.200.2 63240 typ host generation 0\\r\\na=candidate:4207765013 1 tcp 1509957375 192.168.200.2 0 typ host generation 0\\r\\na=ice-ufrag:7RgmNz32RO2LS4mE\\r\\na=ice-pwd:Bx6aXE1VNIIj8M60mz9hpydl\\r\\na=fingerprint:sha-256 8F:07:24:AF:93:04:B9:6C:11:58:5E:1C:6D:F0:A3:48:95:1D:2E:30:6F:E8:94:A5:33:7D:4C:32:E7:D3:E3:0F\\r\\na=setup:active\\r\\na=mid:audio\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=sendrecv\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=fmtp:111 minptime=10\\r\\na=rtpmap:103 ISAC/16000\\r\\na=rtpmap:104 ISAC/32000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:106 CN/32000\\r\\na=rtpmap:105 CN/16000\\r\\na=rtpmap:13 CN/8000\\r\\na=rtpmap:126 telephone-event/8000\\r\\na=maxptime:60\\r\\na=ssrc:2623607546 cname:e++dW4vfI5ZcsMQw\\r\\na=ssrc:2623607546 msid:dXBxUsGg3LKlBaM9wIfmN1vRShcncgo4Eg5e 58df3add-26d9-4be8-802e-9178650031b7\\r\\na=ssrc:2623607546 mslabel:dXBxUsGg3LKlBaM9wIfmN1vRShcncgo4Eg5e\\r\\na=ssrc:2623607546 label:58df3add-26d9-4be8-802e-9178650031b7\\r\\nm=video 63240 RTP/SAVPF 100 116 117\\r\\nc=IN IP4 192.168.200.2\\r\\na=rtcp:1 IN IP4 0.0.0.0\\r\\na=candidate:3025050341 1 udp 2113937151 192.168.200.2 63240 typ host generation 0\\r\\na=candidate:4207765013 1 tcp 1509957375 192.168.200.2 0 typ host generation 0\\r\\na=ice-ufrag:7RgmNz32RO2LS4mE\\r\\na=ice-pwd:Bx6aXE1VNIIj8M60mz9hpydl\\r\\na=fingerprint:sha-256 8F:07:24:AF:93:04:B9:6C:11:58:5E:1C:6D:F0:A3:48:95:1D:2E:30:6F:E8:94:A5:33:7D:4C:32:E7:D3:E3:0F\\r\\na=setup:active\\r\\na=mid:video\\r\\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\\r\\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=sendrecv\\r\\na=rtcp-mux\\r\\na=rtpmap:100 VP8/90000\\r\\na=rtcp-fb:100 ccm fir\\r\\na=rtcp-fb:100 nack\\r\\na=rtcp-fb:100 goog-remb\\r\\na=rtpmap:116 red/90000\\r\\na=rtpmap:117 ulpfec/90000\\r\\na=ssrc:2940920821 cname:e++dW4vfI5ZcsMQw\\r\\na=ssrc:2940920821 msid:dXBxUsGg3LKlBaM9wIfmN1vRShcncgo4Eg5e 050c4be5-838f-4f8d-9a03-ff79823696af\\r\\na=ssrc:2940920821 mslabel:dXBxUsGg3LKlBaM9wIfmN1vRShcncgo4Eg5e\\r\\na=ssrc:2940920821 label:050c4be5-838f-4f8d-9a03-ff79823696af\\r\\n\",\"callId\":\"5464xvd\"}}"
		function parse(){
		
		var sdp = $("#sdp_area").val(); 
		// /[{].*[}]/g nur JSON content
		var sdp_neu=sdp.match(/[{].*[}]/g);
	
		// regex:(\\\\r\\\\n) oder [\\][\\][r][\\][\\][n] Filtern die Zeilenumbrüche
		var blub=sdp_neu.replace(/([\\][\\][r][\\][\\][n])/g, '<br />' );
		
		document.getElementById('test').innerHTML=blub;
		
		//console.log(JSON.stringify(sdp));
		
		}
		
		</script>
		
	</head>
	<body>
		<div id="textfeld">	
			<h1>Bitte kopieren Sie hier den Payload rein!</h1>
			<textarea id="sdp_area">
		</textarea>
		</div>
		
		<div id="buttons">
		<button id="parser" onclick="parse()">
				Parsen
			</button>
		</div>
		<div id="test">
		hier kommt die Ausgabe...
		<div>
	</body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
Wie hast du das denn getestet? Wirklich in die Textarea was eingegeben oder im Code eine Zeile zur Definition des Textes einkommentiert? Und wenn letzteres: Wie hast du das Javascript an den Browser gegeben? Indem du die Datei per file:// geöffnet hast oder mit einem Webserver dazwischen?
 
Hallo,
Danke für die Rückmeldung. Also habe es auf einen Apache getestet. Der String wird wirekt via Copy&Paste in das Textfeld eingefügt und dann die funktion parse() aufgerufen. In der Zeile
HTML:
var sdp_neu=sdp.match(/[{].*[}]/g);
wird alles super gematched. Nur die Zeile:
HTML:
var blub=sdp_neu.replace(/([\\][\\][r][\\][\\][n])/g, '<br />' );
bringt den Fehler: "Uncaught TypeError: undefined is not a function" :confused:

Der String ist nur so als Kommentar zum Verständnis eingefügt.
Grüße
 
Auch dieser Tester matched meine Ergebnisse (58) korrekt. Beide Ausdrücke funktionieren laut Regex-Tester:
/[\\][\\][r][\\][\\][n]/g
oder
/\\\\r\\\\n/g

- - - Aktualisiert - - -

Ich habe offensichtlich gerade die Lösung gefunden!

HTML:
var sdp_neu=sdp.match(/[{].*[}]/g);
produziert mir ein Array. Wenn ich dieses dann nicht mit index [0] adressiere, sagt er die Variable ist undefiniert.

Da muss man aber auch erstmal drauf kommen :-/

Trotzdem vielen Dank.

MfG
 
Zurück
Oben