代码之家  ›  专栏  ›  技术社区  ›  Joven28

使用regex测试字符串中的每个元素是否为8位格式

  •  1
  • Joven28  · 技术社区  · 6 年前

    我有一个字符串,其中大部分是0或1。我需要检查字符串中的每个元素是否是由空格分隔的8位格式,除了最后一个元素。

    例如:

    这些字符串应返回true

    • "11001100 01101111 11001011 00001011" //真的
    • "00001100 11101111 11001000 00000001 11001011" //真的

    这些字符串应该返回false

    • "11001100 1100101 01101111" //错误,因为第二个元素只有7位

    • "11001100 01101111 11001011 00200011" //错误,因为最后一个元素中有2个

    我试过这段代码,但所有的测试都返回真值。我是新来的雷杰克斯,所以任何帮助都会非常感谢:)

    console.log(/([01]{8})+\s?/.test(str2));
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Toto    6 年前

    /^[01]{8}(?: [01]{8})*$/
    

    /               : regex delimiter
      ^             : beginning of string
        [01]{8}     : 0 or 1, must appear 8 times
        (?:         : start non capture group
                    : 1 horizontal space
          [01]{8}   : 0 or 1, must appear 8 times
        )*          : end group, must appear 0 or more times
      $             : end of line
    /               : regex delimiter
    

    var test = [
        "11001100 01101111 11001011 00001011",
        "00001100 11101111 11001000 00000001 11001011",
        "11001100 1100101 01101111",
        "11001100 01101111 11001011 00200011"
    ];
    console.log(test.map(function (a) {
      return a+' --> '+/^[01]{8}(?: [01]{8})*$/.test(a);
    }));