HighDots Forums  

negation von Regexp

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss negation von Regexp in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Stefan Binder
 
Posts: n/a

Default negation von Regexp - 01-20-2006 , 06:53 AM






Hallo,
bin schon den ganzen Vormittag am verzweifeln!
Ich möchte eine eingegeben Zeichenkette auf deren
gültige Zeichen überprüfen. a-Z, A-Z, 0-9 sowie die
Zeichen "@","_","-" und "." möchte ich zulassen.


strg = '([^a-zA-Z0-9_@\.\-])';

reg = new RegExp(strg);
res = (reg.test(eingabe));

Beispiel: eingabe='ste_fan' liefert -> false,
da ja kein ungültiges Zeichen gefunden wurde.

Beispiel 2: eingabe='ste&fan' liefert -> true,
da ein ungültiges Zeichen gefunden wurde.

Ich benötige aber genau den entgegengesetzten Wert von true oder false!
Wenn ich aber

strg = '([a-zA-Z0-9_@\.\-])'; verwende bekomme ich immer true
geliefert egal welche Zeichen die Eingabe enthält. Das gleiche
passiert mit strg = '([^!"§$%])'; ist immer true.

An
reg = new RegExp(strg);
res = (reg.test(eingabe));
kann ich nichts ändern, da meine anderen
Prüfungen funktionieren (z.B. gültige email-Adresse prüfen).

Ich hoffe das war soweit verständlich, und
hoffe jemand ht eine Idee.

Gruß Stefan






Reply With Quote
  #2  
Old   
Martin Honnen
 
Posts: n/a

Default Re: negation von Regexp - 01-20-2006 , 07:11 AM








Stefan Binder wrote:


Quote:
Ich möchte eine eingegeben Zeichenkette auf deren
gültige Zeichen überprüfen. a-Z, A-Z, 0-9 sowie die
Zeichen "@","_","-" und "." möchte ich zulassen.


strg = '([^a-zA-Z0-9_@\.\-])';

reg = new RegExp(strg);
Wenn du nicht irgendwelche dynamischen Werte (z.b. Benutzereingaben)
fuer den regulaeren Ausdruck brauchst, hast du keine Grund, new RegExp
zu benutzen, nimm ein Literal fuer den regulaeren Ausdruck
var regularExpression = /[^a-z0-9_@\.\-]/i;

Wenn du ein Zeichenkettenliteral an new RegExp uebergibst, musst du
immer beruecksichtigen, dass sowohl das Zeichenkettenliteral als auch
der regulaere Ausdruck zum Escapen \ benutzen, dann brauchst du schon

strg = '[^a-zA-Z0-9_@\\.\\-]';

reg = new RegExp(strg);


--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #3  
Old   
Jens Riedel
 
Posts: n/a

Default Re: negation von Regexp - 01-20-2006 , 07:42 AM



Stefan Binder wrote:

Quote:
Ich möchte eine eingegeben Zeichenkette auf deren
gültige Zeichen überprüfen. a-Z, A-Z, 0-9 sowie die
Zeichen "@","_","-" und "." möchte ich zulassen.


strg = '([^a-zA-Z0-9_@\.\-])';

reg = new RegExp(strg);
res = (reg.test(eingabe));
Geht kürzer:

reg = /^[\w@.-]+$/;

Quote:
Wenn ich aber

strg = '([a-zA-Z0-9_@\.\-])'; verwende bekomme ich immer true
geliefert egal welche Zeichen die Eingabe enthält. Das gleiche
passiert mit strg = '([^!"§$%])'; ist immer true.
Ist ja logisch, in beiden Fällen gibt es 'true', sobald auch nur ein
gültiges Zeichen mit im String ist.
Ein String '$%&' würde dir auch 'false' liefern.

Was du suchst ist folgendes:

reg = /^[\w@.-]+$/;
res = (reg.test(eingabe));

Gibt true, wenn die Eingabe o.k. ist, d.h. kein ungültiges Zeichen enthält.

Quote:
An
reg = new RegExp(strg);
res = (reg.test(eingabe));
kann ich nichts ändern
O.k., dann eben so:

strg = '^[\w@.-]+$';

reg = new RegExp(strg);
res = (reg.test(eingabe));

Gruß,
Jens

--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach



Reply With Quote
  #4  
Old   
Martin Honnen
 
Posts: n/a

Default Re: negation von Regexp - 01-20-2006 , 09:11 AM





Jens Riedel wrote:


Quote:
O.k., dann eben so:

strg = '^[\w@.-]+$';

reg = new RegExp(strg);
Dann doch wohl
strg = '^[\\w@.-]+$';
oder?



--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #5  
Old   
Jens Riedel
 
Posts: n/a

Default Re: negation von Regexp - 01-20-2006 , 09:34 AM



Martin Honnen wrote:

Quote:
Dann doch wohl
strg = '^[\\w@.-]+$';
oder?
Selbstverständlich... hab ich beim Copy-and-Paste glatt vergessen, den
zu maskieren, danke für den Hinweis!

Gruß,
Jens

--
Der Kluegere gibt nach - Eine traurige Wahrheit:
sie begruendet die Weltherrschaft der Dummen.
- Marie von Ebner-Eschenbach



Reply With Quote
  #6  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: negation von Regexp - 01-20-2006 , 09:44 AM



Stefan Binder wrote:

Quote:
bin schon den ganzen Vormittag am verzweifeln!
Ich möchte eine eingegeben Zeichenkette auf deren
gültige Zeichen überprüfen. a-Z, A-Z, 0-9 sowie die
Zeichen "@","_","-" und "." möchte ich zulassen.


strg = '([^a-zA-Z0-9_@\.\-])';
Ich hoffe, das wird vorher irgendwo mit `var' deklariert. Und `\.' bzw.
`\-' in einem _String_-Literal ergibt wenig Sinn, denn das sind dort keine
gültigen Escape-Sequenzen und weder `.' noch `-' muss man dort escapen.
In Bereichen innerhalb Regulären Ausdrücken muss man weder `.' noch `-'
escapen, es sei denn, `-' ist ein _Infix_ der Bereichssequenz und soll
dort nicht als Bereichsoperator dienen.

Quote:
reg = new RegExp(strg);
res = (reg.test(eingabe));

Beispiel: eingabe='ste_fan' liefert -> false,
da ja kein ungültiges Zeichen gefunden wurde.

Beispiel 2: eingabe='ste&fan' liefert -> true,
da ein ungültiges Zeichen gefunden wurde.

Ich benötige aber genau den entgegengesetzten Wert von true oder false!
Schau mir in die Signatur, Kleines


PointedEars
--
#define QUESTION ((bb) || !(bb))
// William Shakespeare (if he would have been a hacker ;-))


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.