2016-04-27 39 views
2

我是一個非常初學者的正則表達式。 我需要在JavaScript中以dd/mm/yy格式輸入日期;我有這樣的正則表達式的表達,將日期:Javascript正則表達式日期格式dd/mm/yy

var myDate = new Date().toLocaleDateString().replace(/\b(\d\/)/g, '0$1');

我需要改變上述正則表達式表達有一年兩個數字而已,像:27/04/16

+4

添加'.replace(/ \ d {2}(\ d {2})/,「$ 1」)'替換。 –

+0

感謝WiktorStribiżew,但與您建議的正則表達式的月份在一個數字:27/4/16 – Newton

+0

是嗎?替換(/ \ d {2}(\ d {2})/,/ var myDate = new Date()。toLocaleDateString 「$ 1」);'? –

回答

0

第二更換會做的伎倆:

var myDate = new Date() 
    .toLocaleDateString() 
    .replace(/(\d+)/g, "0$1") 
    .replace(/\d+(\d{2})/g,"$1"); 

我因爲剛剛搶奪的數字去掉從第一更換\b就夠了。這個替換隻是將所有數字都填入前導0.第二個替換將把每個數字修剪爲只有2個最不重要的數字。

+0

是的。我想知道你能否證明這一點。但是,這不是最佳模式。 –

+0

我發現我的答案與您的答案几乎相同,但我選擇了「+」而不是特定的「{2}」。 「證明它」是什麼意思?第一個替換將所有數字都加上0,第二次替換將它們全部減少到最低有效2位數。您還需要將全局開關添加到上面的註釋中。 – Phunt

+0

全局切換是redudant:日期字符串中有多少年? '\ d +'匹配所有可能的數字並開始*回溯* - 效率低下。但這裏並不重要,因爲輸入字符串非常小。我的妻子終於完成了電子購物,但答案已被接受。當我們處理正則表達式並獲得upvotes時,僅有代碼的答案是沒有用的,你最好解釋你的模式在做什麼。 –

0

嘗試

function addPadding(digit) 
{ 
    return (digit < 10) ? '0' + String(digit) : digit; 
} 
var date = new Date(); 
dateString = addPadding(date.getDate()) + "/" + addPadding((date.getMonth() + 1)) + "/" +date.getFullYear().toString().substr(2,2); 
console.log(dateString); 
+0

getDate()和getMonth()將返回單個數字,並且對於值<10,不帶前導零。 – Pappa

+0

我已編輯我的答案 –

0

上毗溼奴拉維的後小幅回調:

var date = new Date(); 
var day = date.getDate() < 10 ? "0" + (date.getDate()) : date.getDate(); 
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : (date.getMonth() + 1); 
var year = date.getFullYear().toString().substr(2,2); 
var dateString = day + "/" + month + "/" + year; 
console.log(dateString);