最好的方法来在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并返回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 (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]+
表示一个或多个从0
到9
或从a
到z
的字符。
有关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()
- C#中用于电子邮件validation的最佳正则expression式
- Html.ValidationSummary(false,“message”)总是显示,即使在页面加载
- 正则expression式匹配来testing一个有效的年份
- HTML5input模式search报价
- 一些黑客可以从用户那里窃取cookie,并在网站上用这个名字login?
- ASP.NET MVC 5 Web.config:“FormsAuthenticationModule”或“FormsAuthentication”
- 使用成员资格提供程序的ASP.NET MVC 4 Web API身份validation
- 检查是否所有的数组项目都是空的PHP
- Node.js的validation库