JavaScript 用户的输入验证



我正在创建一个需要验证用户输入的程序。

用户应该能够写浮点数和一些字母,如'k'代表千或'm'代表百万。允许有:数字,列表中只有一个字母(g,k,m,n,u)和只有一个'。'表示十进制数。如果用户输入不同的符号,则列表中的两个字母,两个点,后面跟着另一个符号-文本框中不显示任何内容。

到目前为止,我所做的根本不起作用。我甚至不能列出允许使用的符号。我该如何解决这个问题?我几乎看过网上所有关于regexp的页面。
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.],所以你将能够检测到字符串中的任何错误字符。

使用正则表达式,您可以这样写:aaaaaaaaaaakhhhhhhhhh将返回yes.

从您提供的代码来看,看起来您是在一次测试一个字符的字符串。您需要的代码只验证输入的字母是否正确,但从整体上看,由按键创建的最终字符串可能不是您期望的格式。

例如,字符串123.123.321.m都是有效的字符,但最后的字符串是无效的。

基本上,您需要添加验证来检查最终输入的字符串。

像这样的regexp可以帮助您验证最终的字符串输入。

numcheck = /^[0-9]*.?[0-9]+[gkmnu]?$/

这个正则表达式表示

  1. 可选匹配0-9
  2. next,可选地匹配点
  3. 下一步,匹配至少一个数字
  4. 字符串的结尾可以是集合
  5. 中的一个字符。
/^[0-9]*[.]*[0-9]*[Mkmpu]*$/

这个非常灵活,可以处理诸如"。57米"57" 57米"57米"57。米"57.57米"。

可以了

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

相关内容

  • 没有找到相关文章

最新更新