0

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

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

4

1 回答 1

3

您忘记了其中两个要求。

  1. 它必须只包含1s 和0s:

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

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

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

    ^1[01]*(000|1)$|^1$
    

另一个补充,如果您只允许使用“理论”正则表达式(交替、组和重复)中可用的正则表达式结构,它看起来像这样(在这种情况下,锚是隐含的):

1(0|1)*(000|1)|1
于 2012-12-08T01:15:33.393 回答