我有一年的输入字段,我需要一个正则表达式来验证它.我有这样的代码:^([12]\d)?(\d\d)$.但我希望允许仅在一定范围内验证年份(例如,1990-2010).我该怎么做?
编辑.范围必须是1950-2050
mis*_*hik 28
试试这个:
1990年至2010年:
/^(199\d|200\d|2010)$/
Run Code Online (Sandbox Code Playgroud)
1950 - 2050年:
/^(19[5-9]\d|20[0-4]\d|2050)$/
Run Code Online (Sandbox Code Playgroud)
其他例子:
1945年至2013年:
/^(194[5-9]|19[5-9]\d|200\d|201[0-3])$/
Run Code Online (Sandbox Code Playgroud)
1812年至3048年:
/^(181[2-9]|18[2-9]\d|19\d\d|2\d{3}|30[0-3]\d|304[0-8])$/
Run Code Online (Sandbox Code Playgroud)
基本上,您需要将范围拆分为简单的"可复制"块:
1812-3048: 1812-1819 + 1820-1899 + 1900-1999 + 2000-2999 + 3000-3039 + 3040-3048
regex: 181[2-9] 18[2-9]\d 19\d\d 2\d{3} 30[0-3]\d 304[0-8]
Run Code Online (Sandbox Code Playgroud)
RegExp似乎不是正确的工具.如果您已经将年份值隔离,那么一个简单的比较就可以了:
if (+yr >= 1990 && +yr <= 2010)
Run Code Online (Sandbox Code Playgroud)
该+yr字符串转换为数字