gpt4 book ai didi

REGEX 用逗号分隔的唯一数字

转载 作者:行者123 更新时间:2023-12-01 22:30:56 25 4
gpt4 key购买 nike

我正在尝试验证以逗号分隔的数字 1-31 的唯一列表(不重复)。

  • 2,4,6,7,1 是有效输入。

  • 2、2、6 无效

  • 2 有效

  • 2、无效

  • 1,2,3,4,15,6,7,31 有效

  • 1,2,3,4,15,6,7,32 无效

  • 20,15,3

    我试过了^((([0]?[1-9])|([1-2][0-9])|(3[01]))(?!([0]?[1-9] ])|([1-2][0-9])|(3[01])*,\\1(?!([0]?[1-9])|([1-2][0 -9])|(3[01])) 但它接受重复数字

最佳答案

对于超过 1 位数字的数字范围,只需在周围添加单词边界
捕获组和反向引用。
隔离一个完整的数字。

这个特定的数字范围是 1-31

 ^                                       # BOS
(?! # Validate no dups
.*
( # (1 start)
\b
(?: [1-9] | [1-2] \d | 3 [0-1] ) # number range 1-31
\b
) # (1 end)
.*
\b \1 \b
)
(?: [1-9] | [1-2] \d | 3 [0-1] ) # Unrolled-loop, match 1 to many numb's
(?: # in the number range 1-31
,
(?: [1-9] | [1-2] \d | 3 [0-1] )
)*
$ # EOS

    var data = [
'2,4,6,7,1',
'2,2,6',
'2,30,16,3',
'2,',
'1,2,3,2',
'1,2,2,3',
'1,2,3,4,5,6,7,8'
];

data.forEach(function(str) {
document.write(str + ' gives ' + /^(?!.*(\b(?:[1-9]|[1-2]\d|3[0-1])\b).*\b\1\b)(?:[1-9]|[1-2]\d|3[0-1])(?:,(?:[1-9]|[1-2]\d|3[0-1]))*$/.test(str) + '<br/>');
});

关于REGEX 用逗号分隔的唯一数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45946266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com