最好的方法来在Javascript中的字母数字检查

你可以请build议最好的方式来执行在JSP中的input字段的字母数字检查? 我已经附上我目前的代码,我知道它没有接近完美:)

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

你可以使用这个正则expression式 /^[a-z0-9]+$/i

提问者使用str.charCodeAt(i)的原始倾向似乎比正则expression式select更快。 在我的jsPerftesting中, RegExp选项在Chrome 36中执行速度降低了66%(在Firefox 31中稍慢)。

以下是原始validation代码的清理版本,它接收一个string并返回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 (AZ) !(code > 96 && code < 123)) { // lower alpha (az) return false; } } return true; }; 

当然,也可能有其他的考虑,比如可读性。 一行正则expression式看起来更漂亮。 但是如果你严格的关注速度,你可能会考虑这个select。

你不需要一次一个地做。 只要做一个不是字母数字的testing。 如果find一个,validation失败。

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

如果至less有一个非字母数字的匹配,它将return false

用正则expression式来检查它。

Javascript regexen没有POSIX字符类,所以你必须手动编写字符范围:

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

这里^表示string的开头, $表示string的结尾, [0-9a-z]+表示一个或多个从09或从az的字符。

有关Javascript regexen的更多信息,请访问: https : //developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions

  // 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字母数字validation。

我会创build一个string原型方法:

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

那么,用法是:

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