javascript用户的输入验证

时间:2011-07-07 15:21:35

标签: javascript regex validation textbox user-input

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

用户应该可以写入浮动数字和一些字母,如'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 这是输入的示例代码。我没有尝试给出合理的结果。 (当然,我从退货中删除了'!')。

4 个答案:

答案 0 :(得分:0)

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

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

使用正则表达式,你写了类似的东西:aaaaaaaaakhhhhhhhhh将返回是。

答案 1 :(得分:0)

从您提供的代码中,您似乎一次只测试一个字符串。 您必须输入的代码仅验证输入了正确的字母,但作为一个整体,从按键创建的最终字符串可能不是您期望的格式。

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

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

这样的正则表达式可以帮助您验证最终的字符串输入。

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

此正则表达式

  1. 可选地匹配0-9
  2. 接下来,可选择匹配一个点
  3. 接下来,匹配至少一个数字
  4. 字符串的结尾可能以集合
  5. 中的一个字符结尾

答案 2 :(得分:0)

/^[0-9]*[\.]*[0-9]*[Mkmpu]*$/

这个非常灵活,可以处理诸如“.57m”“57”“57m”“57.m”“57.57m”等其他情况。

答案 3 :(得分:0)

这有效

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