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

Funktion Buchstaben/Zahlen

Wenn keine Zeichen außerhalb der angegebenen Klasse vorhanden sind ist der Ausdruck wahr. Sind jetzt auch zwei Verneinungen die wahr ergeben.
Ja, du hast recht - jetzt beim zweiten Durchlesen macht's Sinn.
Vermutlich hat der TS in die Regex "if string not contain" mit hineingenommen....
 
@mikdoe
Ich habe unter anderem folgendes probiert (hoffentlich nach deinem Tipp):
Code:
var regExp = /[^a-z0-9]*$/i;
Jetzt wird alles akzeptiert, auch Sonderzeichen... aber nach wie vor nur wenn zuerst eine Ziffer kommt. Wenn zuerst ein Buchstabe kommt wird nichts akzeptiert.
Dann habe ich es so probiert:
Code:
var regExp = /[^a-z0-9]/i;
Und nun wird gar nichts mehr akzeptiert...
Da ich wirklich Anfänger bin, bin ich weiterhin sehr froh um eure Hilfe...
 
Ich weiß nicht, was dein übriger Code noch machen soll aber mein Regex ist einwandfrei. Lass das hier mal laufen:
HTML:
<!DOCTYPE html>
<html>
<head>
<title>für Asterix3</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
</head>
<body>
<input type="text" id="eingabe">
<input onclick="test(document.getElementById('eingabe').value);" type="button" value="Test">
<script>
function test(val) {
	var obj = {
		'custom': {
			validation: function(value, options) {
				var regExp = /[^a-z0-9]/i;
				if (regExp.exec(value)) {
					return false;
				}
				else { return true; }
			}
		}
	};
	var erg = obj['custom']['validation'](val);
	if (!erg) { alert('nein'); }
	else { alert('ja'); }
}
</script>
</body>
</html>

In deinem Code wird später auch noch mit parseInt() in eine Zahl gewandelt. Wieso sind dann Buchstaben zulässig bei der Eingabe??
 
Ja der funktioniert, besten Dank!
Jetzt muss ich das nur noch irgendwie einbauen können...
Wie gesagt, ist das ein DreamweaverCode, den ich da mit eurer Hilfe abgeändert habe. Ursprünglich war das der 'integer' Code, darum hat es wohl das parseInt() drin.
Es sollten aber eben auch Buchstaben zulässig sein. Ich sollte also das dort irgendwie umbauen können. Oder deinen Code so in meinen Einbauen, damit es den Code in die DB schreibt.
Herzlichen Dank für deine Hilfe!

- - - Aktualisiert - - -

Habe nun wegen dem Tipp mit der Zahlumwandlung die Dreamweaver-Regex für E-Mail genommen und nach der Vorgabe von mikdoe abgewandelt.
Funktioniert nun einwandfrei!
Code:
	'custom': {
		validation: function(value, options) {
			var rx = /^[a-z0-9]*$/i;
			return rx.test(value);
		}
	},

Herzlichen Dank für eure Geduld und Hilfe!
 
OK, aber dein Regex ist wieder nicht so, wie du es habe wolltest. Gib mal bei deinem Code a, ein. Und danach gibst du das mal mit meinem Code ein.
 
warum? Bei dir bekomme ich 'nein' und bei mir wird es abgelehnt.
Was siehst du, was noch falsch ist?
Danke für deine Bemühungen!
 
Du willst mir sagen, dass a, bei dir mit dem gezeigten Code angehalten wird? Wenn ich deinen letzten Regex in meinen Code nehme wird das bei mir durchgelassen, was auch richtig ist, weil dein Regex nach wie vor falsch ist. Denn wenn ich dich richtig verstanden habe darf außer Buchstaben und Zahlen nichts drin vorkommen.

Nimm mal diesen Code und aktiviere abwechselnd deinen Regex und meinen Regex:

HTML:
<!DOCTYPE html>
<html>
<head>
<title>für Asterix3</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
</head>
<body>
<input type="text" id="eingabe">
<input onclick="test(document.getElementById('eingabe').value);" type="button" value="Test">
<script>
function test(val) {
	var obj = {
		'custom': {
			validation: function(value, options) {
//				var regExp = /[^a-z0-9]/i;
				var regExp = /^[a-z0-9]*$/i;
				if (regExp.exec(value)) {
					return false;
				}
				else { return true; }
			}
		}
	};
	var erg = obj['custom']['validation'](val);
	if (!erg) { alert('nein'); }
	else { alert('ja'); }
}
</script>
</body>
</html>

Wenn dein Regex mit diesem Code bei Eingabe von a, ein nein anzeigt ist dein Browser kaputt.
 
Zuletzt bearbeitet:
hm. Dein Code stimmt.
Wenn ich den andern laufen lasse (mit deinem Script) wird nun alles angehalten. Auch richtiges..
Was ist denn der Unterschied (resp. was macht dieses *$?
Vielen Dank, für den Unterricht!
 
Du willst mir sagen, dass a, bei dir mit dem gezeigten Code angehalten wird?
was heißt angehalten? sein regexp matcht a, nicht

Wenn ich deinen letzten Regex in meinen Code nehme wird das bei mir durchgelassen, was auch richtig ist,
du kannst nicht wieder mal die logik drehen und sagen es ist falsch, hatten wir doch schonmal

weil dein Regex nach wie vor falsch ist.
warum? ich sehe keinen fehler

Denn wenn ich dich richtig verstanden habe darf außer Buchstaben und Zahlen nichts drin vorkommen.
ja, ist ja auch der fall

Nimm mal diesen Code und aktiviere abwechselnd deinen Regex und meinen Regex:
dann musst du aber auch die auswertung drehen
 
hesst, lass mal. asterix und ich verstehen uns schon.
asterix, das Problem an deinem Regex ist, dass es nur das erste Zeichen kontrolliert und den Rest nicht. Ich hab schon mal gesagt, dass das Dach in die eckigen Klammern gehört. Und hinten den Stern und vorne das Dollar weg. Du willst ja prüfen, ob an einer beliebigen Stelle ein Zeichen außerhalb der Menge Buchstaben+Ziffern vorkommt. Und genau das macht mein Code, es gibt wahr, wenn es matcht, also wenn unerlaubte Zeichen enthalten sind, daher return false im wahr-Zweig.
 
hesst, lass mal. asterix und ich verstehen uns schon.
nee, ich denke nicht

asterix, das Problem an deinem Regex ist, dass es nur das erste Zeichen kontrolliert und den Rest nicht.
falsch

Ich hab schon mal gesagt, dass das Dach in die eckigen Klammern gehört.
kommt darauf an, was man will


Und hinten den Stern ... weg
nein, der ist bei ihm notwendig


und vorne das Dollar weg.
das Dollar ist hinten und auch notwendig

Du willst ja prüfen, ob an einer beliebigen Stelle ein Zeichen außerhalb der Menge Buchstaben+Ziffern vorkommt.
nein, ER will prüfen, dass nur buchstaben und zahlen enthalten sind

Und genau das macht mein Code, es gibt wahr, wenn es matcht, also wenn unerlaubte Zeichen enthalten sind, daher return false im wahr-Zweig.
und seiner "gibt wahr", wenn nur buchstaben und zahlen enthalten sind
 
Ja, stimmt, hesst hat Recht. Beides geht, asterix' matcht, wenn kein unerwünschtes Zeichen enthalten ist, meins matcht, wenn eines enthalten ist. Da ich Regexe immer mit möglichst wenig Syntax gestalte damit sie möglichst übersichtlich und schnell zu erfassen sind und mir daher asterix' Syntax fremd war hab ich das nicht direkt gesehen.
 
*räusper* Korbinian, da ist noch eine Frage offen.
Oh - hatte eigentlich auf den Post von dbarthel geantwortet und die von asterix3 nicht gesehen...

schnell zu erfassen sind
Das ist Geschmackssache ich finde "positive" RegExpe leichter zu erfassen (hier: besteht mein String von vorne bis hinten nur aus [a-z0-9]) als negative, die ich dann nochmal verneinen muss (hier: ist in einem kein Zeichen enthalten, das nicht ein [a-z0-9] ist) - doppelte Verneinung führt schnell zu Verwirrung. Hatten wir hier ja auch:
Vorsicht, das zweite "nicht" muss raus!
 
Zurück
Oben