2

所以,我想构建一个正则表达式,我可以传入一个 0 和 1 的字符串(例如“0010101000111100100011110001101100011”),然后确保对于每 6 个连续字符,该块中至少需要两个 1。

此外,长度小于 6 的字符串应该通过。

传递字符串的例子:

  • “”
  • “00”
  • “11000011”
  • “01010100”

失败字符串的例子:

  • “110000000011”
  • “000001”

这些示例是非常小的字符串,但我想构建一个以获取任何长度的字符串。

现在,我正在寻找一种用正则表达式表达这一点的好方法,而不是使用循环等解决方案。

4

2 回答 2

5

只需使用此正则表达式并检查它是否不匹配:

/000000|000001|000010|000100|001000|010000|100000/
于 2012-09-18T18:07:15.240 回答
2

这是一个可以解决问题的正则表达式(匹配有效字符串):

^((?!0{6}|10{5}|010{4}|001000|000100|0{4}10|0{5}1)[01])+$

示例:http ://www.rubular.com/r/VelZ1Iqml6

这在重复中使用负前瞻,以便在字符串中的每个位置检查条件。

如果您能够只检查不匹配的字符串,那就更简单了,您可以使用 davidrac 的解决方案或这个稍微缩短的版本(我在正则表达式的前瞻中使用):

0{6}|10{5}|010{4}|001000|000100|0{4}10|0{5}1
于 2012-09-18T18:13:39.327 回答