2011-07-06 776 views
0

我有一個函數可以防止用戶輸入負值。任何人都可以告訴我需要在下面的正則表達式中做出什麼樣的改變來完成這項工作。正則表達式不允許負數

function testAmount(obj){ 

var reg0Str = '^[0-9]*\\.?[0-9]{0,2}$'; 
var reg1Str = /(^\d{1,3}(,\d\d\d)*$)/; 
var temp = obj.value; 

var reg0 = new RegExp(reg0Str); 
var testFlag = reg0.test(remCommas(temp)); 
var testFlag0 = reg1Str.test(temp); 
if(!(testFlag||testFlag0)){ 
     alert("Please enter a valid Number"); 
    obj.focus; 
} 
    return testFlag; 
} 
+0

我的建議是努力學習做你的工作......總有一天他們不會要求你重構別人的代碼,你將不得不寫你的工作。 – SJuan76

+0

是的,你是對的..但我不明白這部分的代碼做了什麼......^[0-9] * \\。?[0-9] {0,2} $ – dazzle

回答

4

只允許數字字符(和點)。在您的正則表達式的開頭添加\\-?

1

我不明白什麼 這部分代碼沒有...^[0-9] * \。?[0-9] {0,2} $

^主播(而不是串中的任意位置匹配)的正則表達式的字符串的開頭
[0-9]只有數字,可縮寫爲\ d(或\ d內斜線)
*表示匹配0次或多次
\\.?裝置可選點
[0-9]{0,2}意味着0〜2位
$錨的正則表達式的字符串的結尾(沒有在比賽後)

所以這正是零個或多個數字後跟一個可選點,隨後在最多兩個數字。請注意,空字符串也匹配...

至於您的請求,瑪拉斯的答案是正確的。

我質疑你展示的代碼的質量,但這是另一個問題(爲什麼一個字符串與真正的正則表達式,[0-9]與\ d等等,看起來像不同的人更新)。