Pertanyaan Cara terbaik untuk memeriksa alfanumerik di Javascript


Bisakah Anda menyarankan cara terbaik untuk melakukan pemeriksaan alfa numerik pada bidang INPUT di JSP? Saya telah melampirkan kode saya saat ini dan saya tahu tidak ada di mana dekat dengan sempurna :)

<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


asal


Jawaban:


Kamu dapat memakai regex ini  /^[a-z0-9]+$/i


73
2017-12-13 22:26



Kecenderungan asli penanya untuk digunakan str.charCodeAt(i) tampaknya lebih cepat daripada alternatif ekspresi reguler. Di tes saya di jsPerf opsi RegExp berkinerja 66% lebih lambat di Chrome 36 (dan sedikit lebih lambat di Firefox 31).

Berikut ini versi clean-up dari kode validasi asli yang menerima string dan kembali true atau 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;
};

Tentu saja, mungkin ada pertimbangan lain, seperti keterbacaan. Ekspresi reguler satu baris jelas lebih baik untuk dilihat. Tetapi jika Anda benar-benar peduli dengan kecepatan, Anda mungkin ingin mempertimbangkan alternatif ini.


45
2017-08-17 18:26



Anda tidak perlu melakukannya satu per satu. Lakukan saja tes untuk apa pun itu tidak alfa-numerik. Jika ditemukan, validasi gagal.

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

Jika setidaknya ada satu kecocokan dari non alfa numerik, itu akan return false.


30
2017-12-13 22:52



Periksa dengan regex.

Javascript regexen tidak memiliki kelas karakter POSIX, jadi Anda harus menulis rentang karakter secara manual:

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

Sini ^ berarti awal string dan $ berarti akhir dari string, dan [0-9a-z]+ berarti satu atau lebih karakter dari 0 untuk 9 ATAU dari a untuk z.

Informasi lebih lanjut tentang regexen Javascript di sini: 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);
    }

Lebih lanjut, artikel ini juga membantu memahami validasi alfanumerik JavaScript.


5
2017-12-29 04:27



Saya akan membuat metode prototipe String:

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

Kemudian, penggunaannya adalah:

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

5
2018-01-04 18:30