Javascript 无法为此模式编写正则表达式

Javascript 无法为此模式编写正则表达式,javascript,regex,Javascript,Regex,我有以下几种模式: 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); 但它不起作用 有人

我有以下几种模式:

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);
但它不起作用

有人能帮我修改一下吗


谢谢

我想这就是你想要的:

^(?!\/)((^|\/)(2[0-3]|1[0-9]|[1-9]))+$

演示:

我想这就是您想要的:

^(?!\/)((^|\/)(2[0-3]|1[0-9]|[1-9]))+$

演示:

因为这个问题不清楚解决方案是否必须使用正则表达式

就我个人而言,我不建议在这个任务中不使用正则表达式。我会发现这样的函数更容易使用:

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"]
函数processDate(字符串){
var tokens=string.split('/');
返回{
代币:代币,
isValid:tokens.every(函数(令牌){
var num=parseInt(令牌,10);

返回1,因为这个问题不清楚解决方案是否必须使用正则表达式

就我个人而言,我不建议在这项任务中不使用正则表达式。我会发现这样的函数更容易使用:

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"]
函数processDate(字符串){
var tokens=string.split('/');
返回{
代币:代币,
isValid:tokens.every(函数(令牌){
var num=parseInt(令牌,10);

return 1哇,太棒了!谢谢!最后一个问题,我如何从正则表达式中返回一个数组,每个单元格都是一个组?对不起,我不太懂JavaScript。其他人必须帮你回答。没关系-谢谢。哇,太棒了!谢谢!最后一个问题,我如何返回一个数组,每个单元格都是gro从正则表达式开始?很抱歉,我真的不懂JavaScript。其他人会帮你回答这个问题。没关系-谢谢。这个方法很好,但除了验证格式之外,我还需要正则表达式将表达式拆分为组进行进一步处理。更新后也会返回实际的标记。我认为这样做是不可行的在同一个regexp中进行oth验证和拆分,即使使用AMDcze的巧妙模式也是如此。尼斯:-)可以使用regex将表达式拆分为多个组,这使其成为真正干净持久的解决方案!该方法很棒,但除了验证格式之外,我还需要正则表达式将表达式拆分为多个组以进行进一步处理。更新后也返回实际的标记。我认为在中同时进行验证和拆分是不可行的同样的regexp,即使使用AMDcze的聪明模式也是如此。很好:-)使用regex可以分成多个组,这使它成为真正干净和持久的解决方案!