Regexp排除101和110

The*_*One 3 regex grammar

什么是正则表达式接受语言{0,1}上的所有内容但没有子串110或101?

接受:

  • 111111
  • 000011111
  • 100001000001001
  • 010
  • 1

拒绝:

  • 100110
  • 010100
  • 123

编辑:根据以下答案的评论,这个问题是要求正式的正则表达式.

Yaa*_*lch 11

这是解决方案(即使没有预测):

/^0*(11*$|10$|100+)*$/
Run Code Online (Sandbox Code Playgroud)
  • 从任意数量的零开始.
  • 循环(知道:到目前为止解析的字符串不以"1"或"10"结尾)
    • "1 $"没问题(停止)
    • 如果你找到"11",那么在你到达终点之前你不能阅读任何东西
    • "10 $"还可以.
    • 如果您阅读"10"并想继续,请阅读一个或多个零.然后回到循环.


Gre*_*reg 6

你最好检查它是否不匹配/101|110/

  • 这不会强制执行字符串长度 - 你只需要做(php)if(!preg_match('/ 101 | 110 /',$ str)){} (4认同)