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

Funktion Buchstaben/Zahlen

asterix3

New member
Hallo zusammen
Ich bin auf der Suche nach einer JavaScript-Funktion, die nur Buchstaben und Zahlen erlaubt (keine Sonderzeichen).
Kann mir jemand helfen?

Vielen Dank im Voraus
 
Hallo!
Deine Frage wirkt etwas merkwürdig. Worum geht es denn? Soll ein Eingabefeld überprüft werden?
 
ja genau, ein Eingabefeld soll überprüft werden - sorry.
Es sollen keine Sonderzeichen eingegeben werden können.
 
Und mit welchem Ziel? Soll das an ein Serverscript gesendet werden oder ist das eine Hausaufgabe oder was soll mit korrekten Eingaben passieren?
 
Eine Funktion kenne ich da nicht, aber so sollte es klappen:

Code:
var eingabe = prompt ('Eingabe');
var regexp = /[^A-z0-9_\-] /


if (regexp.test (eingabe)
{
alert ('Ja')
}
else {alert ('Nein')}

Ungetestet und ohne Haftung für Tippfehler.

Sorry habe zu spät gesehen, das das Script auf ein Formular reagieren soll.

Da muss statt prompt dann document.getElementById(Formularfeld-ID) genommen werden.
 
Zuletzt bearbeitet:
Besten Dank
Eigentlich möchte ich dieses Script (das Dreamweaver liefert) abändern, so dass nicht nur Zahlen sondern auch Buchstaben erlaubt sind. Aber keine Sonderzeichen.
Da ich blutiger Anfänger bin, wäre ich hier froh um Hilfe.

Code:
'integer': {
		characterMasking: /[\-\+\d]/,
		regExpFilter: /^[\-\+]?\d*$/,
		validation: function(value, options) {
			if (value == '' || value == '-' || value == '+') {
				return false;
			}
			var regExp = /^[\-\+]?\d*$/;
			if (!regExp.test(value)) {
				return false;
			}
			options = options || {allowNegative:false};
			var ret = parseInt(value, 10);
			if (!isNaN(ret)) {
				var allowNegative = true;
				if (typeof options.allowNegative != 'undefined' && options.allowNegative == false) {
					allowNegative = false;
				}
				if (!allowNegative && value < 0) {
					ret = false;
				}
			} else {
				ret = false;
			}
			return ret;
		}
	},
 
Auf jeden Fall, musst du regexp anpassen, so wie oben.
Aber ansonsten bin ich bei deinem Dreamwaver-Script raus.
Aber mein Code oben sollte nur Sonderzeichen blocken.
 
Zuletzt bearbeitet:
Es muss auch erwähnt werden, dass Feldprüfungen in Javascript nur ein KANN sind. Das Feld muss im Serverscript auf jeden Fall zusätzlich nochmal geprüft werden, bevor es in eine DB oder sonst wohin geschrieben wird, das ist ein MUSS!
 
So das Skript die Eingabe nur validieren (also vor Absenden überprüfen und, gegebenen Falls, eine Fehlermeldung ausgeben) oder wirklich die Eingabe von Sonderzeichen komplett verhindern?

@dbarthel: deine RegExp verhindert nicht alle Sonderzeichen. So werden [\]^_` durchgelassen. Auch überprüft es nur, ob irgendwo ein "normales" Zeichen gefolgt von einem Leerzeichen vorkommt... die RegExp müsse in etwa so aussehen /^[a-z0-9]*$/i
 
Vielen Dank, es funktioniert nun schon fast richtig.
Allerdings müssen nun zuerst Zahlen kommen, damit der Code angenommen wird (7ERSTE wird angenommen).
Allerdings möchte ich ALLE Zahlen und Buchstaben in BELIEBIGER Reihenfolge akzeptieren.
Im Moment wird DREEST abgeblockt.
Kann mir jemand sagen warum?
Was muss noch geändert werden?

Herzlichen Dank für eure kompetente Hilfe!

Code:
	'custom': {
characterMasking: /[\-\+\d]/,
		regExpFilter: /^[a-z0-9]*$/i,
		validation: function(value, options) {
			if (value == '' || value == '-' || value == '+') {
				return false;
			}
			var regExp = /^[a-z0-9]*$/i
;
			if (!regExp.test(value)) {
				return false;
			}
			options = options || {allowNegative:false};
			var ret = parseInt(value, 10);
			if (!isNaN(ret)) {
				var allowNegative = true;
				if (typeof options.allowNegative != 'undefined' && options.allowNegative == false) {
					allowNegative = false;
				}
				if (!allowNegative && value < 0) {
					ret = false;
				}
			} else {
				ret = false;
			}
			return ret;
		}
	},
 
Zuletzt bearbeitet:
Ich hab' keine Ahnung, wie die Validierung da implementiert ist, aber ich gehe davon aus, dass du die validation-Funktion umschreiben musst. Eventuell kann es auch reichen, wenn du sie einfach komplett löschst.
 
Besten Dank für den Tipp
Ich habe nun soviel wie möglich gelöscht, das andere braucht es irgendwie, sonst funktioniert es gar nicht mehr.
Aber: Nach wie vor müssen Zahlen vorne stehen, damit der Code als richtig angenommen wird.
Kann da noch jemand helfen, wo man da etwas ändern muss? Warum will er zuerst Zahlen??
Was könnte ich noch probieren?
Vielen Dank für eure Hilfe!

Code:
	'custom': {
		validation: function(value, options) {
			if (value == '' || value == '-' || value == '+') {
				return false;
			}
			var regExp = /^[a-z0-9]*$/i;
			if (!regExp.test(value)) {
				return false;
			}
			options = options || {allowNegative:false};
			var ret = parseInt(value, 10);
			if (!isNaN(ret)) {
				var allowNegative = true;					
			} else {
				ret = false;
			}
			return ret;
		}
	},
 
Zuletzt bearbeitet:
*räusper* Korbinian, da ist noch eine Frage offen.

Asterix, bitte benutze doch einfach Online regex tester and debugger: JavaScript, Python, PHP, and PCRE
Damit kann man sich jeden beliebigen Regex zaubern. Bei dir vermute ich ein Problem mit dem Dach. Wenn das innerhalb eckiger Klammern steht heißt es "Zeichen außerhalb folgender Menge". Wenn es ganz vorn steht heißt das die Regex beginnt ganz links zu suchen. Musst du selbst mal ein bisschen fummeln. Ich arbeite in JS nicht mit Regexen.

In Perl sähe die gewünschte Regex so aus: if string not contain /[^a-z0-9]/i
Heißt soviel wie "wenn der String nicht Zeichen enthält, die nicht a-z oder 0-9 unter Ignorierung von Groß- und Kleinschreibung enthält" dann ist der Ausdruck wahr.
 
Zuletzt bearbeitet:
Herzlichen Dank
Ich habe nun schon wieder sehr vieles ausprobiert, aber ich kenne mich einfach zu wenig aus (daher ja auch der Dreamweaver-Code..)
Der Tester sagt folgendes, ich kann aber kein Englisch, könnte hier nochmals jemand den entscheidenden Tipp geben?
Das Problem: Der Code wird nur angenommen, wenn vorne Ziffern stehen, sobald ein Buchstabe (auch wenn nachher Ziffern), wird er als falsch ausgegeben:
Code:
^[a-z0-9]*$
Der Kommentar vom Tester:
^ assert position at start of the string
[a-z0-9]* match a single character present in the list below
Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
a-z a single character in the range between a and z (case insensitive)
 
Vorsicht, das zweite "nicht" muss raus!
Nein, lies nochmal genau. Nur zwei Verneinungen geben wahr.
Man kann es auch anders formulieren. Wenn keine Zeichen außerhalb der angegebenen Klasse vorhanden sind ist der Ausdruck wahr. Sind jetzt auch zwei Verneinungen die wahr ergeben.

Ich habe nun schon wieder sehr vieles ausprobiert, aber ich kenne mich einfach zu wenig aus (daher ja auch der Dreamweaver-Code..)
Hast du meinen Vorschlag auch getestet?
 
ja, ich habe deinen Vorschlag getestet, aber der scheint leider mit JavaScript nicht zu funktionieren (er überprüft gar nicht mehr).
 
Zurück
Oben