Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中当前年份(例如)19和未来年份格式MMYY的正则表达式正则表达式正则表达式_Javascript_Regex_Validation - Fatal编程技术网

javascript中当前年份(例如)19和未来年份格式MMYY的正则表达式正则表达式正则表达式

javascript中当前年份(例如)19和未来年份格式MMYY的正则表达式正则表达式正则表达式,javascript,regex,validation,Javascript,Regex,Validation,我需要一个正则表达式用于信用卡形式 规则很简单,格式必须是MMYY 我可以用这个正则表达式实现这一点 /^(0[1-9]|1[0-2])\d{2}$/ 现在我正在研究应用验证,以使本年度的YY19 在未来的几年里 也许很难使其动态,但我可以替换19中的字符串 今年的javascript版本,所以现在我只想把它修改为19岁及以上 有效MMYY的示例: 0126 1220 0119 有效MMYY中的示例 0101 1111 1218 这是我现在的参考资料 给定一年以及未来几年应该过去的年份,动态构

我需要一个正则表达式用于信用卡形式 规则很简单,格式必须是
MMYY

我可以用这个正则表达式实现这一点

/^(0[1-9]|1[0-2])\d{2}$/
现在我正在研究应用验证,以使本年度的YY19 在未来的几年里

也许很难使其动态,但我可以替换19中的字符串 今年的javascript版本,所以现在我只想把它修改为19岁及以上

有效MMYY的示例:

0126

1220

0119

有效MMYY中的示例

0101

1111

1218

这是我现在的参考资料

给定一年以及未来几年应该过去的年份,动态构造这样一个正则表达式有点乏味。考虑使用捕获组代替,然后只检查捕获的yy是否大于或等于极限:

const yearLimit = 19; // or pass this as an argument if you want

const re = /^(?:0[1-9]|1[0-2])(\d{2})$/;
const match = str.match(re);
if (!match) {
  return false;
}
const year = Number(match[1]);
return year >= yearLimit;
const validate=(str)=>{
const yearLimit=19;//如果需要,也可以将其作为参数传递
常数re=/^(?:0[1-9]| 1[0-2])(\d{2})$/;
常量匹配=str.match(re);
如果(!匹配){
返回false;
}
施工年份=编号(匹配[1]);
返回年份>=年限;
};
console.log(
验证('1234'),
验证('1212')

);如果您只想用正则表达式求解,下面的代码将起作用

const currentYear=19;
const currentDecade=当前年份/10;
const unitPlaceCurrentYear=currentYear%10;
regex_string=`^(0[1-9]| 1[0-2])(1[${unitPlaceCurrentYear}-9]|[${currentDeced+1}-9][0-9])$`
var re=新的RegExp(regex_字符串);
输入=['0126'、'1220'、'0119'、'0101'、'1111'、'1218'];
inputs.map((str)=>{
让match=str.match(re);
if(match)console.log('matched:'+str);
else console.log('不匹配:'+str);

});以下是您答案的动态解决方案
var-date=新日期()
var a=date.getFullYear().toString().substr(2,2).split(“”)
var monthRegex=“(0[1-9]| 1[0-2])”
var yearRegex1=“([“+a[0]+”-9][“+a[1]+”-9])”
var yearRegex2=“([”+(parseInt(a[0],10)+1)+”-9][0-9])”
var regex2=new RegExp(“^”+monthreex+yearRegex1+“|”+yearRegex2+“$”);
console.log(regex2.test('1218'))
console.log(regex2.test('1219'))

console.log(regex2.test('1239'))
我相信它在0101上失败检查您的reg表达式,我在这里测试了模式匹配后的年份测试,在提取的捕获组的测试中。如果将
0101
放入代码段,
verify
将根据需要返回
false
。我喜欢你的风格,这里还有另一个测试,你可以通过解释正则表达式来改进答案,因为这是这个问题的起点。。。。