当前位置: 首页 > 知识库问答 >
问题:

Regex验证逗号分隔的唯一数字列表

白驰
2023-03-14
  • 2,4,6,7,1是有效输入。
  • 2,2,6无效
  • 2有效
  • 2,无效
  • 1,2,3,4,5,6,7,8无效(只有7个数字)

我尝试了^[1-7](?:,[1-7])*$,但它接受重复的数字

var data = [
  '2,4,6,7,1',
  '2,2,6',
  '2',
  '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 ' + /(?!([1-7])(?:(?!\1).)\1)^((?:^|,)[1-7]){1,7}$/.test(str) + '<br/>');
  });

共有1个答案

唐骏祥
2023-03-14

编辑:

修正了重复数字不是第一个时的错误。

一种方法是:

^(?:(?:^|,)([1-7])(?=(?:,(?!\1)[1-7])*$))+$
^                               # Start of line
    (?:                         # Non capturing group
        (?:                     # Non capturing group matching:
            ^                   #  Start of line
            |                   # or
            ,                   #  comma
        )                       #
        ([1-7])                 # Capture digit being between 1 and 7
        (?=                     # Positive look-ahead
            (?:                 # Non capturing group
                ,               # Comma
                (?!\1)[1-7]     # Digit 1-7 **not** being the one captured earlier
            )*                  # Repeat group any number of times
            $                    # Up to end of line
        )                       # End of positive look-ahead
    )+                          # Repeat group (must be present at least once)
$                                # End of line
js lang-js prettyprint-override">var data = [
  '2,4,6,7,1',
  '2,2,6',
  '2',
  '2,',
  '1,2,3,4,5,6,7,8',
  '1,2,3,3,6',
  '3,1,5,1,8',
  '3,2,1'
  ];
  
  data.forEach(function(str) {
    document.write(str + ' gives ' + /^(?:(?:^|,)([1-7])(?=(?:,(?!\1)[1-7])*$))+$/.test(str) + '<br/>');
  });
 类似资料:
  • 我试图验证一个逗号分隔的数字列表1-31唯一(不重复)。 20、15、3 我尝试但是它接受重复的数字

  • 我试图验证数字1-8的逗号分隔列表。

  • 我使用PHP的Filter Functions(具体FILTER_VALIDATE_REGEXP)来验证输入数据。我有一个选项列表,$输入变量可以从列表中指定许多选项。 选项是(不区分大小写): 所有 奖励 加入 促销 流 签入 verified_checkin $输入变量几乎可以有任何值的组合。可能的成功案例是: all(值可以是all,也可以是逗号分隔的其他值列表,但不能同时是两者) 我能想到

  • 使用JavaScript,我只需要接受数字和逗号。 我使用的regex模式如下所示 还有一些类似的问题只是部分地处理了这一点: 带有逗号分隔符的数字的regex验证(只有整数,没有小数部分) 小数正则表达式,其中小数后面的数字是可选的(没有逗号分隔,小数部分限制为1位数) JavaScript函数需要允许数字、点和逗号(点、逗号和数字以任意顺序匹配)

  • null 无效示例: 关于只有当值是唯一的时,我如何匹配有什么建议吗?