2011-09-27 54 views
0

我正在做一個捐贈的webapp,我需要格式化一個字符串,會留下缺點( - ),加號(+)和小數點(。)。我希望人們能夠按照他們想要的方式格式化他們的美元金額,但保留原來的數字和小數。全部替換 - ,+和。

目前,我有以下代碼: var raised = $('#raised').val().replace(/\D/g,'');

任何幫助嗎?謝謝!

UPDATE

讓我解釋一下這是爲什麼驗證輸入一個簡單/快捷方式。

這將是管理部門將僅使用一次的事情,只有一個負責人。這不會是多個用戶輸入提交實際資金的東西。我同意這可能會更好地計劃,但這更是一項急需的工作。事實上,向你展示我所做的將是最快的方式向你展示:http://www.cirkut.net/sub/batterydonate-pureCSS/

這將在活動/拍賣期間進行預測,以便人們可以瞭解捐贈了多少錢。

負責輸入捐款的負責人有足夠的能力輸入有效的輸入,所以我儘可能快地整理了我所能做的(整個事情需要在明天中午之前完成)。

但無論如何我找到了我需要的東西。非常感謝大家!

+0

只是好奇心(所以我可以看到更好的方式,這將需要接近)但是...''''''''''''''''''' – stslavik

+2

這是驗證輸入的不好方法。如果用戶輸入無效數據,則應該產生錯誤。您不應該嘗試猜測無效輸入中的有效數據。無論如何,你所要求的都是行不通的。它將允許用戶輸入字符串,如「2.2 + 1.2-12.3」。沒有辦法像「2.2.34」那樣輸入並確定用戶意圖。你應該問的任務:我應該如何驗證貨幣投入? – mikerobi

回答

4

做的正是你的要求,你可以使用這個表達式:

var raised = $('#raised').val().replace(/[^-+.\d]/g,''); 

但是請注意,您仍然需要驗證返回的字符串是否爲有效號碼,因爲像'---''+++'這樣的字符串將會通過。這也許甚至不是你想在客戶端做的事情。

+3

+1因爲指出這是一個壞主意,但是你很低估它是一個多麼糟糕的想法。 – mikerobi

2

試試下面的正則表達式:

.replace(/[^\d\-+\.]/g, '') 

因爲這並不能保證你有一個像+-12.34.56--1有效的數量,而不是東西,那麼你可以驗證你有一個有效的數字的東西,如:

/^[-+]?\d+(\.\d+)?$/ 
+0

'[^ \ d。+ - ]'看起來好一點。除此之外,+1。 –

+1

您已經正確回答了這個問題,但沒有解決解決問題會導致應用程序中斷的事實。 – mikerobi

+0

@mikerobi - 正確,即使這是對這個問題的有效答案,它並沒有解決這樣的事實,即海報可能沒有意識到這一點,而且它本身仍然可能導致問題,因爲您仍然可能有大量無效的字符串。我添加了一個驗證正則表達式,可以幫助確定數字的有效性。 – mynameiscoffey

1

正則表達式字符類可以通過在開頭添加^符號來取消。

就你而言,這使得它非常簡單:你可以添加所有你想保留在一個字符類中的字符並取消它。

var raised = $('#raised').val().replace(/[^\d\.\+\-]/g,''); 

希望有所幫助。