2012-01-11 95 views
0

我目前在學習正則表達式,但是需要這個很急。我有一組值(10, 19.5, 13.99, 9.09)。除第二個值外,這些格式都很好。正則表達式在第一個小數點後加0

我的問題是如何改寫,使19.5變得19.50,而不影響其他條目即(10, 19.50, 13.99, 9.09)

非常感謝你們。

+0

,只要它是一個數字變量,零點向右(小數點後)將被刪除,除非你想要它們作爲字符串。 – medopal 2012-01-11 10:58:02

回答

2

如果這些號碼,使用toFixed()

如果這些字符串,你可以使用

num="19.5" 
num.replace(/^(\d+\.\d)$/,"$10"); 
+0

或者將字符串轉換爲數字。 – 2012-01-11 11:12:03

+0

工程就像一個魅力。謝謝大家! – echez 2012-01-11 11:32:05

0

EDITED答:

<script type="text/javascript"> 
var num = 19.9; 
if(String(num).indexOf('.')>-1) 
{ 
    num = num.toFixed(2); 
} 
alert(num); 
</script> 

直答案是使用「.toFixed(2)」,但我們覈實,如果它是一個小數,使我們不必像‘10.00’

結果

爲進一步格式化選項,你擁有jQuery插件的NumberFormatter:

http://archive.plugins.jquery.com/project/numberformatter 

下面是該項目的網頁:

http://code.google.com/p/jquery-numberformatter/

直接鏈接該庫:

http://jquery-numberformatter.googlecode.com/files/jquery.numberformatter-1.2.2.jsmin.js

+0

這會改變'10'到'10.00',但我想很容易檢查一個整數。 – Kobi 2012-01-11 11:08:03

0

如果你想使用正則表達式,你可以這樣做:

"10, 19.5, 13.99, 9.09".replace(/^\d+\.\d{1}$/g, function (full) { 
    return full + "0"; 
}); 

這將返回"10, 19.50, 13.99, 9.09"

+0

這是不正確的。首先,啓用'/ g'說明符。這將用13.909代替13.99。 – porges 2012-01-11 11:04:16

+0

好的,謝謝;更新。 – jabclab 2012-01-11 11:07:46

+0

這與'.replace(/^\ d + \。\ d {1} $/g,'$&0')'是一樣的 - 在這種情況下你不需要回調函數。此外,'$'只會匹配最後一個位置(如果輸入是單個數字,而不是整個列表,則是正確的),並且根據定義,「{1}」不執行任何操作。我建議你運行代碼並查看其結果... – Kobi 2012-01-11 11:11:03

0

搜索:

(\.\d)(\D|$) 

這點後面跟着一個數字,然後這不是一個數字(或字符串的結尾)。

替換:

$10$2 

這是第一個捕獲組,然後 '0',那麼第二個捕獲組。

var s = '10, 19.5, 13.99, 9.9'; 
s = s.replace(/(\.\d)(\D|$)/g, '$10$2'); 
// s == '10, 19.50, 13.99, 9.90' 
0

例如,迭代每個值:

var value = '19.5'; 
value = value.replace(/^\d+[\.,]\d{1}$/, '$&0'); 
0

試試這個

var array = [10, 19.5, 13.99, 9.09]; 
for(var i=0; i< array.length;i++){ 
    if(/[0-9].[0-9]{1}$/.test(array[i])) array[i] = array[i]+'0'; 
} 
alert(array); 

OUTPUT : 

10, 19.50, 13.99, 9.09 

小提琴:http://jsfiddle.net/M9hZx/

相關問題