二进制数的正则表达式可被8 OR奇数整除

时间:2012-12-08 01:13:21

标签: regex

  

“编写一个正则表达式,描述所有零的字符串和一个代表二进制数字的字符串,这些二进制数字是奇数或8可被整除。数字可能没有任何前导零。”

我将答案标记为(000|1)$,标记为错误。我看不出原因。请解释!提前谢谢。

1 个答案:

答案 0 :(得分:3)

你忘记了两个要求。

  1. 它必须仅包含10 s:

    ^[01]*(000|1)$
    
  2. 可能没有前导0

    ^(?!0)[01]*(000|1)$
    

    如果不允许前瞻,则会变得有点棘手:

    ^1[01]*(000|1)$|^1$
    
  3. 另外一个补充,如果你只允许使用“理论”正则表达式(交替,组和重复)中可用的正则表达式结构,它将看起来像这样(在这种情况下锚点是隐含的):

    1(0|1)*(000|1)|1