2016-07-25 34 views
-1

我試圖驗證,如果我進入了一個字符串的日期格式「MM/YYYY」模式檢查返回false的JavaScript /打字稿

下面匹配是代碼的樣本我使用的是相同的:

var date='05/2016' 
var patt= new RegExp('^((0[1-9])|(1[0-2])|[1-9])\/(\d{4})$'); 
patt.test(date); 

但上述代碼返回false。

我試着用正則表達式檢查運行它: https://regex101.com/

的模式似乎是工作的罰款。

有人能讓我知道什麼是缺失。 https://jsfiddle.net/ymj6o8La/

回答

2

你要逃避傳遞給正則表達式(反斜線)的字符串。

var patt= new RegExp('^((0[1-9])|(1[0-2])|[1-9])\\/(\\d{4})$'); 

更妙的是,你的情況,這不是動態的,所以你應該使用正則表達式的文字,而不是

var patt = /^((0[1-9])|(1[0-2])|[1-9])\/(\d{4})$/ 
0

你應該避開你的反斜槓。爲了表示\d甚至\你應該把它(e.g: \\)背後一個反斜槓:

var date = '05/2016' 
 
var patt = new RegExp('^((0[1-9])|(1[0-2])|[1-9])\\/(\\d{4})$'); 
 
console.log(patt.test(date));

0

嘗試使用模式這樣

patt= /^((0[1-9])|(1[0-2]))\/(\d{4})$/;