[英]How to create regex pattern for Number Patterns like AAAABBB and AAABBCC
如何为 AAAABBB 和 AAABBCC 等数字模式创建正则表达式模式。 第一组匹配的数字不应在第二组及以后的组中考虑。
Here:
A = [0-9] Any number between 0 to 9
B = [0-9] Any number between 0 to 9 excluding A
C = [0-9] Any number between 0 to 9 excluding A and B
例如: 5555333
、 7777999
、 2225588
、 1113377
等。我想使用 java 正则表达式从更大的数字范围中找到这些数字。
我相信这可以满足您的要求。 它捕获所需的数字,后跟 0 个或多个相同的数字,而不是在否定前瞻断言中使用反向引用的任何先前数字。
String pat = "(\\d)\\1*(?:(\\d)\\2*(?!\\1)){1,2}";
long[] data = {112233, 123333, 888777555, 999666, 222111222,222222, 111122221, 11223344,44442222,444455522, 522212121};
for (long i : data) {
String s = Long.toString(i);
System.out.printf("%12s - %s%n", s, s.matches(pat) ? "Valid" : "Invalid");
}
印刷
112233 - Valid
123333 - Valid
888777555 - Valid
999666 - Valid
222111222 - Invalid
222222 - Valid
111122221 - Invalid
11223344 - Invalid
44442222 - Valid
444455522 - Valid
522212121 - Invalid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.