2012-09-21 34 views
1
var text6 = document.getElementById("text6").value; 
    var regularExpression1 = /^[1-9]?[0-9]{1}$|^100$/; 

    if (!text6.match(regularExpression1)){ 
      alert("Please enter Valid Age"); 
      return false; 
     } 

年齡場的正則表達式此代碼不能正常工作我想在JavaScript

+1

您正在嘗試使用**正則表達式**來驗證**整數**值? – Passerby

+0

雅但是在數據庫中它的一個字符串 –

+0

什麼是不工作?哪些測試用例失敗?你想驗證什麼? – akluth

回答

0

你的正則表達式使用|但沒有()

/(^[1-9]?[0-9]{1}$|^100$)/會工作,但它可能會更好。該表達式可簡化爲/^([1-9]?\d|100)$/,即不需要重複^$,[0-9]可以是\d,並且{1}總是不必要的。

我不確定正則表達式最適合驗證一個時代,我不確定爲什麼你不能簡化到/^\d{1,3}$/。事情可能會超過100歲,甚至人。

我也會驗證字段使用/regex/.test()而不是string.match(/regex/)

如果你有一個年齡範圍限制,然後在'正常代碼'而不是正則表達式中測試,那麼更容易跟蹤和修改(如果你的上限改變了)。

+0

您的正則表達式在測試詹姆斯債券的代理人數時失敗:'/^\ d {1,3} $ /。test('007')=== true;'。這是錯誤的,因爲'007'不是一個有效的整數 –

+0

@ gion_13:007是一個有效的整數。你從哪裏採取這些限制?我也沒有說'/^\ d {1,3} $ /'是所有有效整數的正則表達式。 7,07,007和0007都是等價的,我不知道爲什麼有人會強制用戶遵守任何特定的約定,系統越煩人,使用它就越少。 –

+0

容易,不要那麼私人。我並不是在說卑鄙,我只是指出你可以改進你的答案。如果你不這是你的選擇。在這種情況下,你需要驗證一個年齡(不是整數,Sry),我在你的答案中發現錯誤。我並沒有試圖強制任何人堅持我的(或任何其他)具體的約定,因爲我認爲一個年齡不能從零開始(如果你想說你已經三十七歲了,成爲我的客人)。 –

3

請勿使用正則表達式。使用此功能檢查東西是否爲數字

function isNumber(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 

而對於你的情況

function isIntegerBetween0And100(n) { 
    return isNumber(n) && n>0 && n<=100 && n%1===0; 
} 

快得多:)

+0

那符合要求怎麼樣?看看正則表達式,要求是一個介於0和100之間的值,沒有小數位。 –

+0

是的,修正了它。謝謝! –