Was ist der beste Weg, um eine alphanumerische Prüfung für ein INPUT
Feld in durchzuführen JSP
? Ich habe meinen aktuellen Code angehängt
<script type="text/javascript">
function validateCode(){
var TCode = document.getElementById('TCode').value;
for(var i=0; i<TCode.length; i++)
{
var char1 = TCode.charAt(i);
var cc = char1.charCodeAt(0);
if((cc>47 && cc<58) || (cc>64 && cc<91) || (cc>96 && cc<123))
{
}
else {
alert('Input is not alphanumeric');
return false;
}
}
return true;
}
javascript
validation
t0mcat
quelle
quelle
Antworten:
Sie können diesen regulären Ausdruck verwenden
/^[a-z0-9]+$/i
quelle
""
) nicht übereinstimmt.ñ
fällt nicht in das Muster, jedoch voll gültiges UTF-8-Zeichen.charCodeAt()
. Siehe jsPerf und meine Antwort unten .Die ursprüngliche Neigung des Fragestellers zur Verwendung
str.charCodeAt(i)
scheint schneller zu sein als die Alternative mit regulären Ausdrücken. In meinem Test auf jsPerf ist die RegExp-Option in Chrome 36 66% langsamer (und in Firefox 31 etwas langsamer).Hier ist eine bereinigte Version des ursprünglichen Validierungscodes, der eine Zeichenfolge empfängt und zurückgibt
true
oderfalse
:Natürlich kann es auch andere Überlegungen geben, beispielsweise die Lesbarkeit. Ein einzeiliger regulärer Ausdruck ist definitiv schöner anzusehen. Wenn Sie sich jedoch ausschließlich mit Geschwindigkeit befassen, sollten Sie diese Alternative in Betracht ziehen.
quelle
Überprüfen Sie es mit einem regulären Ausdruck.
Javascript-Regexen haben keine POSIX-Zeichenklassen, daher müssen Sie Zeichenbereiche manuell schreiben:
Hier
^
bedeutet Zeichenfolgenanfang und$
Zeichenfolgenende und[0-9a-z]+
bedeutet ein oder mehrere Zeichen von0
bis9
ODER vona
bisz
.Weitere Informationen zu Javascript Regexen finden Sie hier: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions
quelle
/^[a-z0-9]+$/i
Sie müssen es nicht einzeln tun. Machen Sie einfach einen Test für alle, die nicht alphanumerisch sind. Wenn einer gefunden wird, schlägt die Validierung fehl.
Wenn es mindestens eine Übereinstimmung mit einer nicht alphanumerischen Zahl gibt, wird dies der Fall sein
return false
.quelle
Ich würde eine String-Prototyp-Methode erstellen:
Dann wäre die Verwendung:
quelle
Darüber hinaus hilft dieser Artikel auch beim Verständnis der alphanumerischen JavaScript-Validierung.
quelle
Entschuldigung, keine Kontroverse. Aber damit die Community so wächst, wie ich in diesen Jahren gewachsen bin, ist es gut, sich Notizen zu machen.
Die echte alphanumerische Zeichenfolge ist wie
"0a0a0a0b0c0d"
und nicht wie"000000"
oder"qwertyuio"
.Alle Antworten, die ich hier gelesen habe, sind
true
in beiden Fällen zurückgekehrt. Und vergib mir, IMHO, das ist nicht richtig .Wenn ich überprüfen möchte, ob meine
"00000"
Zeichenfolge alphanum ist, ist meine "menschliche" Antwort zweifellos FALSCH.Warum? Einfach. Ich kann keinen Buchstaben char finden. Ist also eine einfache numerische Zeichenfolge
[0-9]
.Wenn ich andererseits meine
"abcdefg"
Zeichenfolge überprüfen wollte , ist meine "menschliche" Antwort sogar FALSCH. Ich sehe keine Zahlen, daher ist es nicht alphanumerisch. Nur Alpha[a-zA-Z]
.Die Antwort von Michael Martin-Smucker war aufschlussreich.
Er strebte jedoch eine bessere Leistung anstelle von Regex an. Dies ist wahr, wenn man einen niedrigen Level verwendet, gibt es eine bessere Leistung. Aber die Ergebnisse sind die gleichen. Die Zeichenfolgen
"0123456789"
(nur numerisch),"qwertyuiop"
(nur Alpha) und"0a1b2c3d4f4g"
(alphanumerisch) werdenTRUE
als alphanumerisch zurückgegeben. Gleicher Regex-/^[a-z0-9]+$/i
Weg. Der Grund, warum die Regex nicht funktioniert, ist so einfach wie offensichtlich. Die Syntax[]
gibt oder , nicht und an . Wenn es also nur numerisch ist oder wenn es nur Buchstaben sind, gibt Regex zurücktrue
.Aber der Michael Martin-Smucker Antwort wurde dennoch aufschlussreich. Für mich. Es erlaubte mir, auf "niedriger Ebene" zu denken, um eine echte Funktion zu erstellen, die eine alphanumerische Zeichenfolge eindeutig verarbeitet. Ich nannte es wie PHP relative Funktion
ctype_alnum
( edit 2020-02-18: Wobei dies jedoch OR und nicht AND prüft ).Hier ist der Code:
... und hier ist die DEMO
Ich bin zu dieser Diskussion gekommen, weil ich nach einer Alternative in Javascript zur PHP-Funktion gesucht habe. Ich habe die Antwort "Ready-to-Go" nicht gefunden, aber wie so oft bei Stackoverflow ist das Konzept des Wissens und des Vergleichs untereinander etwas Erhabenes, das Sie dazu bringt, über die Antwort von jemandem nachzudenken und gemeinsam die Lösung zu finden, die Sie waren suchen, aber Sie dachten nicht, dass Sie es wussten.
Und teile es!
Beste
Oscar
quelle
return isNumeric || isAlpha;
ist alphaNumeric. Das Obige kann für einige hilfreich sein.In einer engen Schleife ist es wahrscheinlich besser, Regex zu vermeiden und Ihre Zeichen fest zu codieren:
quelle
Um zu überprüfen, ob input_string alphanumerisch ist, verwenden Sie einfach:
quelle