Forum Doku Wiki Blog

Forumsarchiv 2006, August
Regulärer Ausdruck in Javascript, Zeichen ausschließen

archivierte Beiträge lesen

  1. (JAVASCRIPT) Regulärer Ausdruck in Javascript, Zeichen ausschließen von Nico, 02. 08. 2006, 19:32

Regulärer Ausdruck in Javascript, Zeichen ausschließen

Der folgende Beitrag wurde am 02. 08. 2006, 19:32 Uhr von Nico veröffentlicht.

Hallo ihr da draußen!

Ich habe mit einem Javascript folgenden regulären Ausdruck erstellt:

/\[f\](.+)\[\/f\]/

Später soll die Fundstelle mit xxx.replace() ersetzt werden.

Das Problem: In der Variable

var test = "[f]sonstwas[/f] irgendein Text [f]wieder Text[/f]";

würde der geklammerte Ausdruck (.+)

"sonstwas[/f] irgendein Text [f]wieder Text"

beinhalten. Ich möchte aber, dass er bei einem ersten Durchlauf nur "sonstwas" enthält. Gibt es die Möglichkeit, den Geklammerten Ausdruck dahingehen zu erweitern, dass alle Zeichen erlaubt sind außer z. B. "[" (was das Problem lösen würde)?

Mit [^\[] habe ich schon experimentiert, bin aber offenbar zu doof, diese Ausschlussregel anzuwenden. Vielen Dank für eure Hilfe!

Regulärer Ausdruck in Javascript, Zeichen ausschließen

Der folgende Beitrag wurde am 02. 08. 2006, 20:08 Uhr von Gunnar Bittersmann veröffentlicht.

Hello out there!

> /\[f\](.+)\[\/f\]/
> Das Problem: In der Variable
> var test = "[f]sonstwas[/f] irgendein Text [f]wieder Text[/f]";
> würde der geklammerte Ausdruck (.+)
> "sonstwas[/f] irgendein Text [f]wieder Text"
> beinhalten.

Ja, weil er „gierig“ ist. ↗ Gierige und genügsame Suchmuster


> Ich möchte aber, dass er bei einem ersten Durchlauf nur "sonstwas" enthält.

Dass der Ausdruck also „genügsam“ ist: /\[f\](.+?)\[\/f\]/
                                                ^

> Mit [^\[] habe ich schon experimentiert,

Damit sollte es auch gehen. Innerhalb von [] gelten allerdings andere Regeln: '[' muss nicht maskiert werden. /\[f\]([^[]+)\[\/f\]/

See ya up the road,
Gunnar
--
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)

Regulärer Ausdruck in Javascript, Zeichen ausschließen

Der folgende Beitrag wurde am 02. 08. 2006, 20:38 Uhr von Nico veröffentlicht.

Hey Gunnar,

du bist großartig. Das funktioniert exzellent. Da habe ich stundenlang rumgedengelt und dann ist es so einfach. LOL

Danke
Nico

Regulärer Ausdruck in Javascript, Zeichen ausschließen

Der folgende Beitrag wurde am 02. 08. 2006, 21:42 Uhr von Nico veröffentlicht.

Okay, ich konnte es dann doch selbst lösen. Schreibe ich nur, falls es sich jemand im Archiv anguckt:

$eintragHtml = preg_replace('/\[f\](.+?)\[\/f\]/','<b>\\1</b>',$eintragHtml);

Regulärer Ausdruck in Javascript, Zeichen ausschließen

Der folgende Beitrag wurde am 02. 08. 2006, 21:18 Uhr von Nico veröffentlicht.

Hallo!

Ich habe mich ein wenig zu früh gefreut.

> Dass der Ausdruck also „genügsam“ ist: /\[f\](.+?)\[\/f\]/

In Javascript funktioniert das mit dem "genügsamen" Script wunderbar:

while(text.search(/(\[f\](.+?)\[\/f\])/)>=0) text = text.replace(RegExp.$1,'<b>'+RegExp.$2+'</b>');

In PHP will es aber partout nicht gehen. Ich bekomme immer ein ereg_replace(): REG_BADRPT. Der Code:

$eintragHtml = ereg_replace("\[f\](.+?)\[\/f\]","<b>\\1</b>",$eintragHtml);

Was muss man denn in PHP anders machen oder wo liegt der Fehler?

Nico

Regulärer Ausdruck in Javascript, Zeichen ausschließen

Der folgende Beitrag wurde am 02. 08. 2006, 21:46 Uhr von Gunnar Bittersmann veröffentlicht.

Hello out there!

> $eintragHtml = ereg_replace("\[f\](.+?)\[\/f\]","<b>\\1</b>",$eintragHtml);
>
> Was muss man denn in PHP anders machen oder wo liegt der Fehler?

Vielleicht solltest du preg_replace verwenden?

(Einer der Gründe, warum ich mit dieser „Web-Matratze“ PHP [Cybaer] gelegentlich spiele, sie aber nie zur echten Freundin haben werde: Es gibt (zu!) viele Funktionen, die dasselbe tun, nur jede mit ihren Eigenheiten.)

See ya up the road,
Gunnar
--
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)

regexp, square brackets maskieren

Der folgende Beitrag wurde am 02. 08. 2006, 23:43 Uhr von seth veröffentlicht.

gudn tach!

> > Mit [^\[] habe ich schon experimentiert,
>
> Damit sollte es auch gehen. Innerhalb von [] gelten allerdings andere Regeln: '[' muss nicht maskiert werden.

ja, muss nicht, darf aber; und ebenso braucht ausserhalb von zeichenklassendefinitionen ] nicht maskiert zu werden.
also statt

 /\[f\]([^[]+)\[\/f\]/

sollte auch

 /\[f]([^[]+)\[\/f]/

funzen.

prost
seth

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4