Regex 使用正则表达式测试字符串中的每个元素是否为8位格式

Regex 使用正则表达式测试字符串中的每个元素是否为8位格式,regex,Regex,我有一个由0或1组成的字符串。我需要检查字符串中的每个元素是否都是由空格分隔的8位格式,最后一个元素除外 例如: 这些字符串应返回true “1100110001101111111001011000001111”//正确 “0000111001111111100100000000001 11001011”//正确 这些字符串应返回false “11001100 1100101 01101111”//错误,因为第二个元素仅为7bit “1100110001101111111001011002

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

例如:

这些字符串应返回true

  • “1100110001101111111001011000001111”
    //正确
  • “0000111001111111100100000000001 11001011”
    //正确
这些字符串应返回false

  • “11001100 1100101 01101111”
    //错误,因为第二个元素仅为7bit

  • “110011000110111111100101100200011”
    //错误,因为最后一个元素中有2

我尝试过这段代码,但所有测试都返回true。我是regex的新手,因此非常感谢您的帮助:)

您已关闭,请使用:

/^[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测试=[
"11001100 01101111 11001011 00001011",
"00001100 11101111 11001000 00000001 11001011",
"11001100 1100101 01101111",
"11001100 01101111 11001011 00200011"
];
console.log(test.map)(函数(a){
返回一个+'-->'+/^[01]{8}(?[01]{8})*$/.test(a);

}));
您的代码在第一个字符串中返回false,该字符串应为true。@Joven28:My bad,js无法识别
\h
,已修复。感谢您的帮助。顺便说一句,我想知道为什么要添加?:这个表达式?@Joven28:这是一个非捕获组,在不需要时比捕获组更有效。
/               : 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