Zeilenumbruch bei RegExp |
Gon
Otto-Normal-Poster Threadstarter
Beiträge: 72 |
hi, ich wiedermal ^^ *winks*
Ich versuche gerade Sonderzeichen zu unterbinden und hab da folgendes was bisher auch wunderbar funktioniert
1:
2:
3:
4: | function cl_Bemerkungen() {
a = document.neu_bewerber.Bemerkungen;
reg = new RegExp('^([a-zA-Z0-9\\-\\_\\.\\,\\@\\€\\ä\\ö\\ü\\Ä\\Ö\\Ü\\!\\ß\? ]+)$');
if(a.value != ""){if(reg.test(a.value) == false){alert('Bitte vermeiden Sie Sonderzeichen! Erlaubt sind a-z A-Z 0-9 . , @ € - _ sowie Leerzeichen und Umlaute.');a.focus();a.select()} |
Wenn n Zeichen im Text ist, das ich nicht vorher zugelassen habe, dann meckert das Fenster und der User muss seine Eingabe überdenken.
Leider handelt es sich hierbei um eine Textbox und ich würde gerne Zeilenumbrüche mit einbeziehen. /n funktioniert hier nicht.
Wisst ihr wie ich in meinem Code den Umbruch einer Zeile erlaube oder habt ihr alternative gute Vorschläge, wie man die Eingabe von Sonderzeichen bestimmter Arten unterbinden kann?
Mit bestem Dank schon mal,
Gon
---
'Never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise.'
(the Duchess)
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
oha, die RegEx sieht ja grauenhaft aus!
Wofür sind den die ganzen doppelten Escape-Zeichen? Eins reicht doch!
\w bzw. \W könnte für dich interessant sein. Das müsste einiges vereinfachen. ( http://de.php.net/manual/de/reference.pcre.pattern.syntax.php)
Was die Zeilenumbrüche angeht ist der Modifikator "m" für dich interessant ( http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php)
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
ach ohh, war JavaScript, ka ob das da alles funktioniert...
|
 Profil
Editieren
Zitieren
|
Gon
Otto-Normal-Poster Threadstarter
Beiträge: 72 |
ich teste es, wenn ich morgen auf arbeit bin. ^^
Jetzt hab ich erstmal 16 ASP und Java-freie Stunden Freizeit (^.^)
Danke trotzdem erstmal.
---
'Never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise.'
(the Duchess)
|
 Profil
Editieren
Zitieren
|
Gon
Otto-Normal-Poster Threadstarter
Beiträge: 72 |
1: | reg = new RegExp('^([a-zA-Z0-9\-_.,@€äöüÄÖÜ!ß? ]+)$'); |
so, siehts besser aus ? ^^
Das kommt halt davon, wenn man im Internet ne Lösung sucht und sie aus Zeitdruck verwendet ohne sie bis ins Detail zu verstehen. Da werden auch die Fehler kopiert.
Ich hab grad eben mit deinem Vorschlag n bissl rumprobiert aber dieses multiline hilft hier leider wenig.
Gäbe es nicht die Möglichkeit, einfach das Drücken von Enter zu unterdrücken mit onKeypress oder so?
---
'Never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise.'
(the Duchess)
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Ich dachte du willst Enter erlauben????
Wenn du es verbieten willst nimm einfach keine Textarea sondern ein Input type="text"
|
 Profil
Editieren
Zitieren
|
Gon
Otto-Normal-Poster Threadstarter
Beiträge: 72 |
hehe, ich glaub ich schreibe verwirrend, wenn man die Zusammenhänge nicht kennt.
Hier wurde bisher eine Access Datenbank verwendet die wir ersetzen sollen.
In der Original Datenbank hatte man ein Feld in der Eingabemaske um Bemerkungen einzutragen.
Wir wollten, den Nutzern zuliebe die immer meckern, wenn sie sich umgewöhnen müssen eine Oberfläche schaffen, die 1:1 der alten gleicht.
Deshalb haben wir auch eine Textarea, nur leider ergeben sich dadurch genannte Probleme.
Möglichkeit 1)
Herausfinden, wie man einen Zeilenumbruch ins RegExp reinnimmt
Möglichkeit 2)
In der Eingabemaske das Enter "ausschalten" oder ein Textfeld nehmen.
Möglichkeit 3) ?
gibts eine? Bin für Alternativen offen.
Wir arbeiten hier fürs Intranet, also kann man davon ausgehen das ausschließlich der IE in einer recht aktuellen Version verwendet wird.
---
'Never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise.'
(the Duchess)
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Warum verarbeitest du die Daten denn nicht mit der Sprache die hinter der Anwendung steht? PHP, ASP oder so? Die hat da doch sicherlich viel mächtigere Werkzeuge als JavaScript und ist nicht vom Browser abhängig.
|
 Profil
Editieren
Zitieren
|
Gon
Otto-Normal-Poster Threadstarter
Beiträge: 72 |
Weil JavaScript den Vorteil hat, dass fehlerhafte Eingaben schon abgefangen werden können bevor der Nutzer überhaupt den Submit-Button betätigt.
So umgeh ich derzeit zB das Problem, dass alle ausgefüllten Felder wieder leer sind.
Ich bin noch kein Meister im Umgang mit
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Naja die Felder wieder zu füllen ist ja wohl nicht so schwer. Wenn du nen Fehler findest lässt du das Formular mit der Fehlermeldung drüber wieder ausgeben und gibst die bisher geposteten Werte wieder in den Values der Inputs aus...
JavaScript hat aber den großen Nachteil, dass jeder der es ausschaltet einfach alles in deine DB reinpacken kann!
|
 Profil
Editieren
Zitieren
|
Gon
Otto-Normal-Poster Threadstarter
Beiträge: 72 |
k, stimmt.
Das mit dem deaktivieren is n echter Grund.
Ich geh erstmal davon aus, dass das nicht eintritt und sprech nachher mal meinen Cheff drauf an. Immerhin bin ich hier nur der Azubi der seine Sklavenarbeit so gut es geht zu machen versucht.
Wenn der sagt, das Firmenintern keiner das ausschalten wird (die DB wird nur von etwa 5 Mitarbeitern genutzt, alle anderen können eh nur einsehen und nicht bearbeiten) dann werd ich nicht umstellen.
Ist am Ende des Projektes noch Zeit, werd ichs trotzdem in Angriff nehmen.
Thx auf Jedenfall und ich finds klasse dass hier immer schnell wer ne Antwort parat hat.
(^_^) Gon
---
'Never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise.'
(the Duchess)
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Prüfungen bei Eingaben mußt du immer serverseitig machen (PHP oder ASP, ...) und kannst sie zusätzlich noch in JavaScript machen. Sowohl bei JS, wie auch bei PHP sollte ein Zeilenumbruch durch \n bzw \r\n angegeben werden können.
Der Modifier m hat damit nichts zu tun. Er dient dazu daß die Anker ^ und $, nicht nur auf Stringanfang und -ende sondern auch auf Zeilenanfang und -ende zutreffen.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
subjective schrieb am 07.04.2005 10:29
Der Modifier m hat damit nichts zu tun. Er dient dazu daß die Anker ^ und $, nicht nur auf Stringanfang und -ende sondern auch auf Zeilenanfang und -ende zutreffen. |
Ich hatte seine Frage auch erst so verstanden, dass er sich wundert, wieso seine Muster nicht über mehrere Zeilen funktionieren.
|
 Profil
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Mit über hat m nicht zu tun - eher mit pro (Zeile). Der Modifier dehnt ein Pattern nicht aus, sondern schränkt es im Gegenteil ein. Interessant wird das zB beim Ersetzen von Zeilen.
Über mehrere Zeilen wäre am ehesten noch s - da wird dann \n mit in . aufgenommen. Wodurch ein .* auch Zeilenumbrüche erwischt.
---
Weaverslave
Diese Nachricht wurde geändert von: subjective |
 Profil
Website
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
oh, kann sein, das is bei mir immer eher so trial and error ;)
Diese Nachricht wurde geändert von: languitar |
 Profil
Editieren
Zitieren
|