javascript用户';输入验证

javascript用户';输入验证,javascript,regex,validation,textbox,user-input,Javascript,Regex,Validation,Textbox,User Input,我正在创建一个需要验证用户输入的程序 用户应该能够写浮点数和一些字母,如千的“k”或百万的“m”。允许为:数字,列表中只有一个字母(g、k、m、n、u),十进制数字只有一个“.”。如果用户放置不同的符号,列表中的两个字母,两个点,紧跟着另一个符号-文本框中不显示任何内容 到目前为止,我所做的根本不起作用。我甚至不能用允许的符号创建一个列表。我怎样才能解决这个问题?我在网上看到了几乎所有关于regexp的页面 function signFilter(e) { var keynum;

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

用户应该能够写浮点数和一些字母,如千的“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);
}

下面是输入的示例代码。我所做的一切都不会产生合理的结果。(当然,我从return中删除了“!”

您的正则表达式只是在
[
]
中测试其中一个字符的存在。您要做的是测试字符串中是否存在任何其他字符

我建议您使用
^
符号,例如:
[^0-9GMkmpu.]
,这样您就可以检测到字符串中的任何错误字符


对于正则表达式,您编写了如下内容:aaaaaaaaaaahhhhhhhhh将返回yes。

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

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

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

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

numcheck = /^[0-9]*\.?[0-9]+[gkmnu]?$/
这个regexp说

  • 可选匹配0-9
  • 接下来,可以选择匹配一个点
  • 接下来,至少匹配一个数字
  • 字符串的结尾可以以集合中的一个字符结尾
  • 这一个非常灵活,可以处理诸如“.57m”“57”“57m”“57.m”“57.57m”之类的各种情况。

    这很有效


    但我需要在每次按键时验证它,不仅仅是在最后。我正在尝试更改这个正则表达式,并至少创建一个允许的字符列表(当然从return中删除“!”),但我总是得到不合理的结果。指数表示法带来的好处不多呢?i、 e.
    1.0E-23
    /^[0-9]*[\.]*[0-9]*[Mkmpu]*$/
    
    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);
      }
    }