簡體   English   中英

javascript 用戶輸入驗證

[英]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]?$/

這個正則表達式說

  1. 可選匹配 0-9
  2. 接下來,可選地匹配一個點
  3. 接下來,匹配至少一個數字
  4. 字符串的結尾可能以集合中的一個字符結尾
/^[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM