web-dev-qa-db-fra.com

Le meilleur moyen de vérifier alphanumérique en Javascript

Pouvez-vous s'il vous plaît suggérer le meilleur moyen possible d'effectuer une vérification alphanumérique d'un champ INPUT dans JSP? J'ai attaché mon code actuel et je sais que son pas près de parfait :)

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

84
t0mcat

Vous pouvez utiliser this regex/^[a-z0-9]+$/i

79
Mahesh Velaga

L'inclination initiale du demandeur à utiliser str.charCodeAt(i) semble être plus rapide que l'alternative d'expression régulière. Dans mon test sur jsPerf l'option RegExp fonctionne 66% plus lentement dans Chrome 36 (et légèrement plus lentement dans Firefox 31).

Voici une version nettoyée du code de validation d'origine qui reçoit une chaîne et renvoie true ou 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;
};

Bien entendu, il peut y avoir d'autres considérations, telles que la lisibilité. Une expression régulière à une ligne est définitivement plus jolie à regarder. Mais si vous êtes strictement préoccupé par la vitesse, vous pouvez envisager cette alternative.

55

Vous n'avez pas besoin de le faire un à la fois. Il suffit de faire un test pour tous ceux qui sont pas alphanumériques. S'il en trouve un, la validation échoue.

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

S'il y a au moins une correspondance d'un nombre non alphanumérique, il sera return false.

32
user113716

Vérifiez-le avec une regex.

Les regexen javascript n'ont pas de classes de caractères POSIX, vous devez donc écrire des plages de caractères manuellement:

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

Ici ^ signifie début de chaîne et $ signifie fin de chaîne, et [0-9a-z]+ un ou plusieurs caractères de 0 à 9 OR de a à z.

Plus d'informations sur les expressions Javascript ici: https://developer.mozilla.org/fr/JavaScript/Guide/Regular_Expressions

30
Mischa Arefiev

Je créerais une méthode prototype String:

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

Ensuite, l'utilisation serait:

var TCode = document.getElementById('TCode').value;
return TCode.isAlphaNumeric()
5
Justin
    // 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);
    }

En outre, cet article aide également à comprendre la validation JavaScript alphanumérique.

5
Neerajan

Pour vérifier si chaîne_entrée est alphanumérique, utilisez simplement:

input_string.match(/[^\w]|_/) == null
0
Mark Baaijens

Dans une boucle serrée, il vaut probablement mieux éviter les expressions rationnelles et coder en dur vos caractères:

function isAlphanumeric(char) {
    return "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(char) > -1;
}
0
Malganis