Thema: Verneinung in JavaScript-RegExps?

Hallo,<P>eine Frage zum verneinenden (negativen) Look-Ahead:<BR>  <BR>/Zeichen(?!folge)/ <P>dürfte, z.B. in Perl, "Zeichen" nur finden, wenn kein "folge" dranhängt. <BR> <BR>JavaScript scheint den negat. Look-Ahead nicht zu kennen (auch nicht im IE5.5).<P>Ein Konstrukt wie /Zeichen[^(folge)]/ geht, scheint's, auch nicht, weil die eckigen Klammern offenbar nur Einzelzeichen als jeweilige Alternativen speichern??<BR> <BR>Kennt jemand eine Alternative, ohne umständliche "herkömmliche" Stringverarbeitung definierte Zeichenfolgen zu negieren? Ich hab grad mehrere Stunden 'rumprobiert, aber mit RegExp nix Zuverlässiges gefunden.<P>Erfahrungsgemäß ist bei Stringverarbeitung "negative" Suche etwa genauso oft gefragt wie "positive"; dann wäre das Fehlen ersterer Möglichkeit in JavaScript ein schwerwiegendes, ärgerliches Manko.?<BR>  <BR>Danke,<BR>Walter BlutigerRegExpAnfänger Z

Re: Verneinung in JavaScript-RegExps?

Sorry, ich hatte ein Brett vor'm Kopf.<BR>  <BR>/Zeichen[^f][^o][^l][^g][^e]/<BR>  <BR>sieht halt noch unschön länglich aus.<BR>  <BR>Gruß<BR>Walter

3

Re: Verneinung in JavaScript-RegExps?

High Walter<P>Wenn's Dir darum geht, genau ein Wort, wie in diesem<BR>Fall "Zeichenfolge" nicht zuzulassen, aber z.B. Zeichensatz,<BR>Zeichenbrett, Zeichensalat, könntest Du es vielleicht so<BR>machen:<P><html><head><title>zeichenfolge</title><BR><script language="JavaScript"><BR>q="";<BR>function Z()<BR>{t=document.F.T.value;<BR> z=t.match(/bZeichenfolgeb/);<BR> t=t.match(/bZeichen[^s]*b/g);<BR> if(t)for(i=0;i<t.length;i++)if(t[i]!=z)q+=(t[i]+"n");<BR> alert(q);<BR>};<BR></script></head><body><BR><form name="F"><textarea rows=20 cols=60 name="T"></textarea><br><BR><input type="button" onclick="Z()" value="SO"><BR></body></html><P><BR>Wenn's darum geht, daß beim Nichtfinden von "Zeichenfolge" irgendwas<BR>passiern soll, kannst Du einfach sagen:<P> z=t.match(/bZeichenfolgeb/);<BR> if(!z)alert("aloahee");<P>gruß<P>matho

Re: Verneinung in JavaScript-RegExps?

Hallo Matho,<P>ja, Dein erstes Beispiel wäre unter anderen Umständen eine Lösung für mein Prob.<BR>Konkret wollte ich //... Kommentare "finden" (und entfernen), nur nicht ein //--><BR> <BR>Leider befindet sich der betreffende RegExp in einem größeren Kontext und soll auch noch eine andere Aktion ausführen, und ich wollte gern alle Aktionen in einer einzigen Anweisung unterbringen (das ist ja das Faszinierende an RegExps).<P>Jetzt hab ich das Prob erst mal suboptimal wie oben von mir angedeutet gelöst, d.h. ein (eher unwahrscheinlicher) Kommentar wie //-.... oder //.-.... oder //..>.... würde ebenfalls nicht gefunden und entfernt. Mit dem Negativ-Look-Ahead-Ausdruck gäb's das Prob nicht.<P>Gruß  <BR>Walter