如何检查字符串的一部分的计数是否与正则表达式的另一部分相等?

时间:2015-05-13 11:10:09

标签: ruby regex validation

我有一个字符串:

0011
01
000111
000111

我需要像这样验证它们:“0”的计数必须与“1”的计数相同。所以“001” - 无效,“0011” - 有效。

如何使用正则表达式执行此操作?

1 个答案:

答案 0 :(得分:0)

在Ruby中,您可以使用子例程:

m = /\b(0(\g<1>)?1)\b/.match('000111');
puts m;

Result of the demo

000111

或者,您可以使用捕获组来匹配相邻的01,然后检查捕获的组长度:

m = /(0+)(1+)/.match('0011');
puts m[1].length === m[2].length ? "True" : "False";

m = /(0+)(1+)/.match('00111');
puts m[1].length === m[2].length ? "True" : "False";

您可以添加^$,仅匹配由前导零和尾随1 s(m = /^(0+)(1+)$/.match('00111');)组成的字符串。

demo program的输出:

True
False