在 JavaScript 中使用字母数字签到的最佳方式

2022-08-30 02:19:33

对 中的字段执行字母数字检查的最佳方法是什么?我已附加当前代码INPUTJSP

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


答案 1

您可以使用此正则表达式 /^[a-z0-9]+$/i


答案 2

提问者最初倾向于使用,这似乎比正则表达式替代方法更快。在我对jsPerf的测试中,RegExp选项在Chrome 36中执行速度慢66%(在Firefox 31中略慢)。str.charCodeAt(i)

下面是原始验证代码的清理版本,该代码接收字符串并返回或:truefalse

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

当然,可能还有其他考虑因素,例如可读性。单行正则表达式绝对更漂亮。但是,如果您严格关注速度,则可能需要考虑这种替代方案。