js 正则表达式

有这样一个校验规则,数字个数可以是3,5,7,10,20这个可以定义为变量

3个,5个,7个,可以输入的范围是0-9
10个 可以输入的范围是1-10
20个 可以输入的范围是1-99
且每个数字之间用英文逗号隔开

例如: 3个时:

1,1,1  正确 可以重复   
3,4,9  正确 
3,4,9, 正确
,3,4,9 正确 
6,1,16 范围错误 如果个数为20就正确
2,4,,5 格式错误 两个逗号不能连用
2,4,a 格式错误 不能为字母

其他个数情况也是这样。
这样的js正则表达式该如何写啊。其中数字个数可以定义为变量。

阅读 1.6k
1 个回答

实现了个Low版的, 应该是可以满足要求

function checkNumber(str, num) {
    var rule = '';
    if (/^[357]$/.test(num)) {
        rule = '[0-9]';
    } else if (num === 10) {
        rule = '([1-9]|10)';
    } else if (num === 20) {
        rule = '([1-9][0-9]?)';
    } else {
        return false;
    }
    var reg = `^,?${ (rule + ',').repeat(num) }?$`;
    return str && new RegExp(reg).test(str);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题