javascript 用户输入验证

发布于 2024-11-18 17:02:02 字数 830 浏览 2 评论 0原文

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

用户应该能够编写浮点数和一些字母,例如代表千的“k”或代表百万的“m”。允许的内容为:数字、列表中仅一个字母(g、k、m、n、u)和仅一个“.”对于十进制数。如果用户放置不同的符号,列表中的两个字母,两个点,字母后面是另一个符号 - 文本框中不会显示任何内容。

到目前为止我所做的根本不起作用。我什至无法创建包含允许标志的列表。我该如何解决这个问题?我几乎看过网上关于正则表达式的每个页面..

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 这是输入的示例代码。我尝试的任何事情都没有给出合理的结果。 (当然,我从返回中删除了“!”)。

I'm creating a program in which I need to validate user input.

The User should be able to write float numbers and some letters like 'k' for thousand or 'm' for million. Allowed are: digits, and only one letter from the list(g,k,m,n,u) and only one '.' for decimal numbers. If user puts different sign, two letters from the list, two dots, follows letter by another sign - nothing displays in textbox.

What i did so far is not working at all. I cannot even create a list with allowed signs. How can i solve this? I've seen almost every page on the web about 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
Here is sample code for input. Nothing i try gives resonable result. (of course, i removed '!'from return).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

睫毛溺水了 2024-11-25 17:02:02

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

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

使用正则表达式,您可以编写如下内容:aaaaaaaaakhhhhhhhhh 将返回 yes。

Your regex is just testing the presence of one of the chars into [ and ]. What you are trying to do is testing for the presence of any other char in the string.

I suggest you had a ^ sign like : [^0-9GMkmpu.], so you will be able to detect any wrong char in the string.

With the regex you wrote something like : aaaaaaaaakhhhhhhhhh will return yes.

对风讲故事 2024-11-25 17:02:02

从您提供的代码来看,您似乎一次测试一个字符的字符串。
您必须的代码仅验证输入的字母是否正确,但总的来说,从按键创建的最终字符串可能不是您期望的格式。

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

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

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

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

此正则表达式表示

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

From the code you provided, it looks like you are testing the string one character at a time.
The code you have to only validates that correct letters are inputted, but as a whole, the final string created from the keypresses may not be in the format you expect.

For example, a string 123.123.321.m are all valid characters, but the final string is not valid.

Basically, you need to add validation that checks the final string inputted.

A regexp like this could help you in validating the final string input.

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

This regexp says

  1. optionally match 0-9
  2. next, optionally match a dot
  3. next, match at least one number
  4. the end of the string may end in one character from the set
深海不蓝 2024-11-25 17:02:02
/^[0-9]*[\.]*[0-9]*[Mkmpu]*$/

这个非常灵活,可以处理多种情况,例如“.57m”“57”“57m”“57.m”“57.57m”。

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

This one is quite flexible and handles sereval cases such as ".57m" "57" "57m" "57.m" "57.57m".

深爱成瘾 2024-11-25 17:02:02

这有效

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

This works

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);
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文