Frage Der beste Weg zum alphanumerischen Einchecken von Javascript


Können Sie bitte den bestmöglichen Weg vorschlagen, eine alphanumerische Prüfung für ein INPUT-Feld in JSP durchzuführen? Ich habe meinen aktuellen Code angehängt und ich weiß, dass er nicht perfekt ist :)

<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;     
   }


75
2017-12-13 22:23


Ursprung


Antworten:


Sie können verwenden diese Regex  /^[a-z0-9]+$/i


73
2017-12-13 22:26



Die ursprüngliche Neigung des Fragestellers str.charCodeAt(i) scheint schneller zu sein als die reguläre Ausdruckalternative. Im mein Test auf jsPerf Die RegExp-Option ist in Chrome 36 um 66% langsamer (und in Firefox 31 etwas langsamer).

Hier ist eine aufgeräumte Version des ursprünglichen Validierungscodes, der eine Zeichenfolge empfängt und zurückgibt true oder false:

function isAlphaNumeric(str) {
  var code, i, len;

  for (i = 0, len = str.length; i < len; i++) {
    code = str.charCodeAt(i);
    if (!(code > 47 && code < 58) && // numeric (0-9)
        !(code > 64 && code < 91) && // upper alpha (A-Z)
        !(code > 96 && code < 123)) { // lower alpha (a-z)
      return false;
    }
  }
  return true;
};

Natürlich kann es andere Überlegungen wie Lesbarkeit geben. Ein einzeiliger regulärer Ausdruck ist definitiv hübscher anzusehen. Aber wenn Sie sich ausschließlich mit Geschwindigkeit befassen, sollten Sie diese Alternative in Betracht ziehen.


45
2017-08-17 18:26



Sie müssen es nicht nacheinander tun. Mach einfach einen Test für alle, die es sind nicht alphanumerisch. Wenn einer gefunden wird, schlägt die Validierung fehl.

function validateCode(){
    var TCode = document.getElementById('TCode').value;
    if( /[^a-zA-Z0-9]/.test( TCode ) ) {
       alert('Input is not alphanumeric');
       return false;
    }
    return true;     
 }

Wenn es mindestens eine Übereinstimmung eines nicht-alphanumerischen gibt, wird es return false.


30
2017-12-13 22:52



Überprüfen Sie es mit einer Regex.

Javascript Regexen haben keine POSIX-Zeichenklassen, daher müssen Sie Zeichenbereiche manuell schreiben:

if (!input_string.match(/^[0-9a-z]+$/))
  show_error_or_something()

Hier ^ bedeutet Anfang der Zeichenfolge und $ bedeutet Ende der Zeichenfolge und [0-9a-z]+ bedeutet eine oder mehrere Zeichen aus 0 zu 9 ODER von a zu z.

Mehr Informationen zu Javascript finden Sie hier: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions


27
2017-12-28 08:44



    // On keypress event call the following method
    function AlphaNumCheck(e) {
        var charCode = (e.which) ? e.which : e.keyCode;
        if (charCode == 8) return true;

        var keynum;
        var keychar;
        var charcheck = /[a-zA-Z0-9]/;
        if (window.event) // IE
        {
            keynum = e.keyCode;
        }
        else {
            if (e.which) // Netscape/Firefox/Opera
            {
                keynum = e.which;
            }
            else return true;
        }

        keychar = String.fromCharCode(keynum);
        return charcheck.test(keychar);
    }

Des Weiteren, Dieser Artikel hilft auch, JavaScript alphanumerische Validierung zu verstehen.


5
2017-12-29 04:27



Ich würde eine String-Prototyp-Methode erstellen:

String.prototype.isAlphaNumeric = function() {
  var regExp = /^[A-Za-z0-9]+$/;
  return (this.match(regExp));
};

Dann wäre die Verwendung:

var TCode = document.getElementById('TCode').value;
return TCode.isAlphaNumeric()

5
2018-01-04 18:30