Javascript Regex-验证逗号分隔的数字列表,长度为1到3位

Javascript Regex-验证逗号分隔的数字列表,长度为1到3位,javascript,regex,Javascript,Regex,我试图验证逗号分隔的数字列表,其中数字可以是1到3位,可以以0开头,但不能是0(0、00或000)。我正在使用以下命令,但当我测试“44222555”时,我发现无效: ^([1-9]|[0-9][1-9]|[0-9][0-9][1-9](?:,(?:[1-9]|[0-9][1-9]|[0-9][0-9][1-9]))*)$ 我认为90在这里也是无效的,但应该是有效的您可以使用负前瞻来简化您的正则表达式: /^(?!0+\b)[0-9]{1,3}(?:,(?!0+\b)[0-9]{1,3})*$

我试图验证逗号分隔的数字列表,其中数字可以是1到3位,可以以0开头,但不能是0(0、00或000)。我正在使用以下命令,但当我测试“44222555”时,我发现无效:

^([1-9]|[0-9][1-9]|[0-9][0-9][1-9](?:,(?:[1-9]|[0-9][1-9]|[0-9][0-9][1-9]))*)$

我认为90在这里也是无效的,但应该是有效的

您可以使用负前瞻来简化您的正则表达式:

/^(?!0+\b)[0-9]{1,3}(?:,(?!0+\b)[0-9]{1,3})*$/gm

(?!0+\b)
是负前瞻,如果在当前位置前面的单词边界之前有一个或多个零,则匹配将失败

在什么情况下

注意:根据字符串的大小,不使用全局标志可以提高速度

  • 每套允许一到三个号码
  • 允许一对多套
  • 不允许0、00、000个零基组合
  • 01、010、001、100允许零基组合
  • 如果一组以上的数字,则两组之间用一个逗号分隔
  • 不允许以逗号结尾
let regex=new RegExp('^((!0+\\b)[0-9]{1,3}\,?\\b)+$);
//注意:如果使用文字符号/regex/.test(),则“\”不会转义。
//也就是说,“^((?!0+\\b)[0-9]{1,3}\,?\\b)+$”变成/^((?!0+\b)[0-9]{1,3}\,?\b)+$/
///^((?!0+\b)[0-9]{1,3}\,?\b)+$/.test(字符串);
log('通过问题测试:44222555',regex.test('44222555');
console.log('通过问题测试:90',regex.test('90');
console.log('可以包含多组一到三个数字:',regex.test('1,22333');
console.log('1234'集合中的数字不能超过三个,!regex.test('1234');
console.log('一组中可以有一个数字',regex.test('1');
console.log('不能将0单独作为一个集合:',!regex.test('0');
console.log('不能将00单独作为一个集合:',!regex.test('00');
console.log('不能将000单独作为一个集合:',!regex.test('000');
log('不能以逗号结尾',!regex.test('123');
console.log('不能包含多个相邻的逗号',!regex.test('123,,694');
console.log('允许的零组合为00#,#00,0#0,00#,#0,0##',regex.test('00110001110011');
log('不能只是逗号',!regex.test(',');

console.log('不能是空字符串',!regex.test('')可以是003吗?只是不是0,00000。对吗?例:122330100001100999。这样可以吗?