2012-11-23 23 views
0

我正在開發應用程序。它有一種形式,其中一個領域是時間。用戶將以24小時格式輸入時間。當用戶輸入時間如07:40那麼它工作正常,但當他們輸入7:00然後它不。所以我想要的是當輸入7:00然後我想在7之前加0。 注意我已經從時間刪除:,並使其像700。現在我想添加前導零,如果用戶沒有在它之前輸入任何內容,並且他們在開始時輸入一個數字,然後保持原樣。我怎樣才能在JavaScript中實現這一點?我知道我可以使用正則表達式,但任何示例都會有所幫助。使用前面的零檢查時間

這是我如何做,但似乎不正確,因爲它不起作用。

var regex = /^\b(0(?!\b))+/g; 

if (!regex.test(time)) { 
    time = '0' + time; 
} 
+0

嗨,你可以使用這樣的... 變種T =「700」; if(t.length == 3) \t t ='0'+ t; alert(t); –

回答

3

要做到這一點,最簡單的方法就是從一個已經前綴字符串片的最後一個ñ數字。如果你想確保你的弦始終是4個位數,你可以這樣做:

time = ('0' + time).slice(-4); 

假設你知道time總是至少有三位數字。可以肯定,你當然可以寫:

time = ('0000' + time).slice(-4); 

但這可能沒有多大意義,在您的具體使用情況。

該代碼可以在沒有任何事先檢查的情況下執行,而不僅僅是在匹配表達式的情況下有條件地執行。在卸下結腸

var time = '7:50'; 
time = time.replace(/\b\d\b/g, '0$&'); 

+0

確切,這也比正則表達式更少的內存要求(在這種情況下) –

0

你可以去掉冒號這樣才做到這一點:

time = time.replace(/^\d{1}:/, '0$&'); 
0

這應該做的很好。

0

如果你是非常具體與您的正則表達式沒有必要獲得幻想與前面加上0

if(/^[0-9]:[0-9]{2}$/.test(time)) { 
    time = "0" + time; 
}