2012-11-03 52 views
0

只是一個小問題: 我試圖讓我的代碼的JSLint無差錯,但碰到了這樣的問題:意外的「 D」中的JSLint

意外的「\ d」。 (在這兩個正則表達式)

hourduration = parseInt(activity.endTime.replace(":\d\d", ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10); 

minuteduration = (parseInt(activity.endTime.replace("(\d)?\d:", ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10))/60; 

我該怎麼做才能改善我的正則表達式,以便jslint將驗證它?

謝謝!

解決方案:

hourduration = parseInt(activity.endTime.replace(/:\d\d/, ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10); 

minuteduration = (parseInt(activity.endTime.replace(/(\d)?\d:/, ""), 10) - parseInt(activity.startTime.replace(":00", ""), 10))/60; 
+0

我懷疑你的正則表達式的有效性。即使這樣做,它被替換爲不能轉換爲任何整數值的空字符串。 – polin

回答

2

JSLint的要你使用RegExp對象或/regex/ '字符串',而不是一個普通的字符串:

// JSLint error 
foo.match(':\d\d'); 
foo.match(RegExp(':\\d\\d')); 

// no error 
foo.match(/:\d\d/); 
foo.match(new RegExp(':\\d\\d')); 

編輯:所有的例子都是有效的,但最後2是使用正則表達式的官方方式。

+0

啊好東西!謝謝! – Tim