Javascript中使用正则表达式的二进制计算

Javascript中使用正则表达式的二进制计算,javascript,regex,binary,Javascript,Regex,Binary,我搞不清楚这些问题。 我想在JS中使用正则表达式来实现这一点 1.所有奇数长度的二进制字符串,包含交替的0和1 2.0和1以上的所有二进制字符串,当解释为二进制数时,表示大于5的数字 3.0和1以上的所有二进制字符串,表示当解释为二进制数时可被4整除的数字 4.长度小于或等于5的所有二进制字符串,仅包含0和1,其中0的数量等于1的数量 任何帮助都是巨大的 为了便于理解,我将其拆分为4个正则表达式: 一, 这与“01”或“10”中的一个或多个匹配,后跟相反的字符,重复一次或多次 二, 这只是检查数

我搞不清楚这些问题。 我想在JS中使用正则表达式来实现这一点

1.所有奇数长度的二进制字符串,包含交替的0和1

2.0和1以上的所有二进制字符串,当解释为二进制数时,表示大于5的数字

3.0和1以上的所有二进制字符串,表示当解释为二进制数时可被4整除的数字

4.长度小于或等于5的所有二进制字符串,仅包含0和1,其中0的数量等于1的数量


任何帮助都是巨大的

为了便于理解,我将其拆分为4个正则表达式:

一,

这与“
01
”或“
10
”中的一个或多个匹配,后跟相反的字符,重复一次或多次

二,

这只是检查数字是否以4位二进制数字结尾

三,

这将确保数字以2个零结尾

四,

这就是不同的可能性。由于必须有相等的零和“1”,因此数字中只能有2或4位数字


如果您需要在一个正则表达式中实现所有功能,您可以将它们组合在一起。

我认为正则表达式并不是解决问题的最佳方案,但它们是:

  • \b(1(01)*|0(10)*)\b
  • \b([01]*11[01]|0*1+[01]*[01]{3})\b
  • \b[01]*00\b
  • \b((01 | 10){1,2}0011 | 1100)\b
  • ^(?:(?:10)+1|(?:01)+0)+$
    
    [01]{4,}$
    
    [01]*0{2,}$
    
    ^(01|10|0011|0101|0110|1001|1010|1100)$