INPUT필드에서 영숫자 확인을 수행하는 가장 좋은 방법은 무엇입니까 JSP? 현재 코드를 첨부했습니다.
<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;     
   }
답변
이 정규식을 사용할 수 있습니다. /^[a-z0-9]+$/i
답변
asker의 원래 사용 성향 str.charCodeAt(i)은 정규 표현식 대안보다 빠릅니다. 에서 jsPerf에 내 테스트 (약간 느린 파이어 폭스 31과) 크롬 36에서 정규 표현식 옵션을 수행하는 66 % 느리게.
다음은 문자열을 수신하고 true또는 반환하는 원래 유효성 검사 코드의 정리 된 버전입니다 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;
};
물론 가독성과 같은 다른 고려 사항이있을 수 있습니다. 한 줄로 된 정규식은 확실히보기에 더 예쁘다. 그러나 속도에 엄격하게 관심이 있다면이 대안을 고려할 수 있습니다.
답변
정규식으로 확인하십시오.
Javascript regexen에는 POSIX 문자 클래스가 없으므로 문자 범위를 수동으로 작성해야합니다.
if (!input_string.match(/^[0-9a-z]+$/))
  show_error_or_something()
여기서는 ^문자열의 시작을 의미하고 문자열의 $끝을 [0-9a-z]+의미하며 0~ 9OR a~ ~ 까지의 문자 중 하나 이상을 의미 합니다 z.
Javascript regexen에 대한 자세한 내용은 https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions를 참조 하십시오.
답변
한 번에 하나씩 수행 할 필요가 없습니다. 영숫자 가 아닌 항목에 대해 테스트를 수행하십시오 . 발견되면 유효성 검사가 실패합니다.
function validateCode(){
    var TCode = document.getElementById('TCode').value;
    if( /[^a-zA-Z0-9]/.test( TCode ) ) {
       alert('Input is not alphanumeric');
       return false;
    }
    return true;
 }
알파벳이 아닌 숫자와 일치하는 항목이 하나 이상 있으면 return false.
답변
String 프로토 타입 메서드를 만듭니다.
String.prototype.isAlphaNumeric = function() {
  var regExp = /^[A-Za-z0-9]+$/;
  return (this.match(regExp));
};
그런 다음 사용법은 다음과 같습니다.
var TCode = document.getElementById('TCode').value;
return TCode.isAlphaNumeric()
답변
    // 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);
    }
또한 이 기사 는 JavaScript 영숫자 유효성 검사를 이해하는데도 도움 이 됩니다.
답변
실례합니다. 논란이 없습니다. 하지만 최근에 저를 성장시킨 것처럼 커뮤니티가 성장하려면 메모를하는 것이 좋습니다.
실제 영숫자 문자열은 또는 "0a0a0a0b0c0d"같고 같지 않습니다 ."000000""qwertyuio"
여기에서 읽은 모든 답변 true은 두 경우 모두 반환 되었습니다. 그리고 저를 용서하십시오, IMHO, 이것은 옳지 않습니다 .
내 "00000"문자열이 영숫자 인지 확인하려면 “인간”대답은 의심 할 여지없이 FALSE입니다.
왜? 단순한. 문자 문자를 찾을 수 없습니다. 따라서 간단한 숫자 문자열 [0-9]입니다.
반면에 "abcdefg"문자열 을 확인하려면 “인간적인”대답도 거짓입니다. 숫자가 표시되지 않으므로 영숫자가 아닙니다. 그냥 알파 [a-zA-Z].
마이클 마틴 – Smucker의 대답은 조명하고있다.
그러나 그는 정규식 대신 더 나은 성능을 달성하는 것을 목표로 삼았습니다. 낮은 수준의 방법을 사용하면 더 나은 성능을 얻을 수 있습니다. 그러나 결과는 동일합니다. 문자열 "0123456789"(숫자 만), "qwertyuiop"(알파 만) 및 "0a1b2c3d4f4g"(영숫자)는 TRUE영숫자로 반환 됩니다. 동일한 정규식 /^[a-z0-9]+$/i방식. 정규식이 작동하지 않는 이유는 간단합니다. 구문 []은 or , not and를 나타냅니다 . 따라서 숫자 만 있거나 문자 만 있으면 정규식은를 반환합니다 true.
단, 마이클 마틴 – Smucker의 대답은 그럼에도 불구하고 조명했다. 나를 위해. 영숫자 문자열을 모호하지 않게 처리하는 실제 함수를 만들기 위해 “낮은 수준”에서 생각할 수있었습니다. 나는 그것을 PHP 상대 함수처럼 불렀다 ctype_alnum( 2020-02-18 편집 : 그러나 이것은 AND가 아닌 OR 확인 ).
코드는 다음과 같습니다.
function ctype_alnum(str) {
  var code, i, len;
    var isNumeric = false, isAlpha = false; //I assume that it is all non-alphanumeric
  for (i = 0, len = str.length; i < len; i++) {
    code = str.charCodeAt(i);
        switch (true){
            case code > 47 && code < 58: // check if 0-9
                isNumeric = true;
                break;
            case (code > 64 && code < 91) || (code > 96 && code < 123): //check if A-Z or a-z
                isAlpha = true;
                break;
            default: // not 0-9, not A-Z or a-z
                return false; //stop function with false result, no more checks
        }
  }
  return isNumeric && isAlpha; //return the loop results, if both are true, the string is certainly alphanumeric
};
… 그리고 여기에 데모가 있습니다.
나는 자바 스크립트에서 PHP 함수에 대한 대안을 찾고 있었기 때문에이 토론에 왔습니다. “ready-to-go”라는 답을 찾지 못했지만 Stackoverflow에서 자주 발생하는 것처럼 서로에 대한 지식과 비교의 개념은 숭고한 것이므로 다른 사람의 답변 에 대해 생각 하고 함께 해결책을 찾을 수 있습니다 . 찾고 있었지만 당신이 그것을 안다고 생각하지 않았습니다.
그리고 그것을 공유하십시오!
베스트
오스카
