我有以下模式:
4/24
8/14/23
3/5/9/21
左边的' /'数字范围在1-23之间 的权利' /'也是一个介于1-23之间的数字。 通知,' / ##'可以重复几次。
我试过这个正则表达式,但它不起作用:
var move = "2/11/23";
var r = new RegExp("^([1-9]|1[0-9]|2[0-3])(/([1-9]|1[0-9]|2[0-3])+)$", "g");
var result= move.match(r);
但它没有用。
任何人都可以帮我修改它。
谢谢!
答案 0 :(得分:3)
答案 1 :(得分:3)
由于问题不清楚解决方案是否必须使用正则表达式......
就我个人而言,我不建议不要使用正则表达式来执行此任务。我会发现这样的函数更容易使用:
function processDate(string) {
var tokens = string.split('/');
return {
tokens: tokens,
isValid: tokens.every(function(token) {
var num = parseInt(token, 10);
return 1 <= num && num <= 23;
})
};
}
var x = "4/24"
var y = "8/14/24"
var z = "3/5/9/21"
console.log(processDate(x).isValid); // true
console.log(processDate(y).isValid); // false
console.log(processDate(z).isValid); // true
console.log(processDate(x).tokens); // ["4", "24"]
console.log(processDate(y).tokens); // ["8", "14", "24"]
console.log(processDate(z).tokens); // ["3", "5", "9", "21"]