[英]javascript user's input validation
我正在创建一个需要验证用户输入的程序。
用户应该能够写浮点数和一些字母,如“k”代表千或“m”代表百万。 允许的是:数字,列表中只有一个字母(g,k,m,n,u)和只有一个“。” 对于十进制数。 如果用户放置不同的符号,列表中的两个字母,两个点,字母后面跟着另一个符号 - 文本框中不显示任何内容。
到目前为止我所做的根本不起作用。 我什至无法创建带有允许标志的列表。 我该如何解决这个问题? 我几乎看过 web 上关于正则表达式的每一页。
function signFilter(e)
{
var keynum;
var keychar;
var numcheck;
if(window.event) // IE
{
keynum = e.keyCode;
}
else if(e.which) // Netscape/Firefox/Opera
{
keynum = e.which;
}
keychar = String.fromCharCode(keynum);
numcheck = /[0-9GMkmpu.]/;
return numcheck.test(keychar);
}
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onkeydown这是输入的示例代码。 我没有尝试给出合理的结果。 (当然,我从返回中删除了'.')。
您的正则表达式只是在[
和]
中测试其中一个字符的存在。 您要做的是测试字符串中是否存在任何其他字符。
我建议您使用^
符号,例如: [^0-9GMkmpu.]
,这样您就可以检测到字符串中的任何错误字符。
使用正则表达式,您可以编写如下内容:aaaaaaaaaakhhhhhhhh 将返回是。
从您提供的代码看来,您一次测试一个字符的字符串。 您只需要验证输入正确字母的代码,但作为一个整体,从按键创建的最终字符串可能不是您期望的格式。
例如,字符串123.123.321.m
都是有效字符,但最后的字符串无效。
基本上,您需要添加验证以检查输入的最终字符串。
像这样的正则表达式可以帮助您验证最终的字符串输入。
numcheck = /^[0-9]*\.?[0-9]+[gkmnu]?$/
这个正则表达式说
/^[0-9]*[\.]*[0-9]*[Mkmpu]*$/
这个非常灵活,可以处理诸如“.57m”“57”“57m”“57.m”“57.57m”之类的案例。
这有效
http://jsfiddle.net/mplungjan/KvJQx/
window.onload=function() {
document.getElementById("t1").onkeypress=function(e) {
var keyNum = (window.event)?window.event.keyCode:e.which;
var keyChar = String.fromCharCode(keyNum);
return /[0-9GMkmpu\.]/.test(keyChar);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.