javascript正则表达式验证范围内的年份

use*_*780 8 javascript regex

我有一年的输入字段,我需要一个正则表达式来验证它.我有这样的代码:^([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)


HBP*_*HBP 7

RegExp似乎不是正确的工具.如果您已经将年份值隔离,那么一个简单的比较就可以了:

if (+yr >= 1990 && +yr <= 2010)
Run Code Online (Sandbox Code Playgroud)

+yr字符串转换为数字


Ham*_*mZa 5

对于1950年到2050年的范围,您可以使用以下正则表达式:

^19[5-9]\d|20[0-4]\d|2050$
Run Code Online (Sandbox Code Playgroud)

在线演示