2015-10-26 38 views
0

我有這個正則表達式來驗證年:如何在JavaScript中驗證年份範圍?

/^(201[5-9]|202[0-5])/.test(year) ? true : false 

正如你可以看到多年來它一直這樣的模式:current_year + 10.years,如何做到這一點沒有硬編碼這樣?我需要類似這樣的東西,但它在Ruby中:valid_years = (Time.now.year..(Time.now.year+10))

+1

比較一年一個數字到年份(數字)的利益。或絃樂;與目前的時間接近的字符串比較也會起作用。 – Pointy

+0

你可以舉一些例子,沒有得到你所說的 – user2931706

+0

動態創建字符串,然後你可以使用字符串創建一個正則表達式對象。試試吧,應該很容易 – musefan

回答

0

您可以構建正則表達式字符串,然後使用它來創建正則表達式對象,這非常簡單。下面是一個例子,雖然它是一個趕到下鍋一起所以你也許可以重構,使其更簡單和可讀性,但它的工作,因爲它是:

var start = 2015; 
var text = '' + start; 
var x = parseInt(start/10, 10); 
var y = start % 10; 
var regexString = '^(' + text.substring(0, 3) + '[' + y + '-9]|' + text.substring(0, 2) + (parseInt(text[2]) + 1) + '[0'; 
if(y > 0) 
    regexString += '-' + y; 
regexString += '])'; 
console.log(regexString); 

var regex = new RegExp(regexString); 
var year = '2020'; 
var result = regex.test(year) ? true : false; 
console.log(result); 

Here is a working example