2011-07-04 49 views
-1

我試着只允許數字01(1)到53)在/之後和2000年以後...... 所以我創建了一個正則表達式,但它似乎沒有工作正則表達式來匹配一個字符串中的日期

此網頁上:http://www.regular-expressions.info/javascriptexample.html 我嘗試過了,它工作得很好......但是當我在網頁

10/2010在測試中,二千分之二十三

function isValidDate(value, format){ 
    var isValid = true; 

    try{ 
     var inputVal = $(this).val(); 
     var dateWWYYYYRegex = '^(0[1-9]|[1234][0-9]|5[0-3])[-/.](20)\d\d$'; 

     var reg=new RegExp(dateWWYYYYRegex); 

     if(!reg.test(value)){ 
      isValid = false; 
      alert("Invalid"); 
     } 

    } 
    catch(error){ 
     isValid = false; 
    } 

    return isValid; 
} 
+3

問題是什麼? *它似乎不工作*在這種情況下意味着什麼? –

回答

3

你必須逃脫反斜槓,如果你要從字符串中創建正則表達式。我只是使用正則表達式語法,因爲它是一個常量:

var reg = /^(0[1-9]|[1234][0-9]|5[0-3])[-/.](20)\d\d$/; 

然而,正則表達式並沒有什麼意義。目前還不清楚它應該是什麼,因爲你的描述也很混亂。

編輯 —現在好了,我明白你在做什麼,我猜這個正則表達式應該可以工作。

+1

我希望能夠在正則表達式01的第一部分寫入到53,並在第二部分2000和過.....所以WW/YYYYY WW是本週(53有一週是最大的一年) YYY是多年來.... – redfox26

+0

雅工作很好,謝謝 – redfox26

0

爲什麼要使用正則表達式完成這個任務?我認爲這是這個任務

簡單地由斜槓分隔的字符串分割錯誤的工具,然後使用數字功能檢查,如果值是你想要的範圍。

function isValidWeekOfYear(value){ 
    var bits = value.split('/'); 
    if(parseInt(bits[1]) < 2000) { return false; } /* probably also want to do a maximum value here? */ 
    if(parseInt(bits[0]) < 1 || parseInt(bits[0]) > 53) { return false; } 
    return true; 
} 

它可能需要更多的驗證,但這應該是一個很好的起點。處理開銷比正則表達式要少得多,只是爲了解析一些數字(並且更容易閱讀)。