使用regex

时间:2018-07-05 15:38:22

标签: regex

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

例如:

这些字符串应返回true

  • "11001100 01101111 11001011 00001011" //正确
  • "00001100 11101111 11001000 00000001 11001011" //正确

这些字符串应返回false

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

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

我尝试过此代码,但所有测试均返回true。我是regex的新手,所以我们将不胜感激:)

console.log(/([01]{8})+\s?/.test(str2));

1 个答案:

答案 0 :(得分:2)

您已关闭,请使用:

/^[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);
}));