【发布时间】:2017-02-17 15:38:53
【问题描述】:
你能帮我找出如何构建一些正则表达式来检测有效的 13 位数字序列
第一种情况:
1111111111111 -invalid
2222222222222 -invalid
333..... -invalid
其他数字也一样,在这种情况下,我做了这个正则表达式:
(^0+$)|(^1+$)|(^2+$)|(^3+$)|(^4+$)|(^5+$)|(^6+$)|(^7+$)|(^8+$)|(^9+$)
但我想简化这个正则表达式,如果有更短的方法来获得这个验证。
第二种情况:
9875978545111 - valid: only 3 1's
11118578954547 - valid: only 4 1's
85781111954547 - valid: only 4 1's
9875978111111 - invalid: 6 1's
1111119875978 - invalid: 6 1's
9871111115978 - invalid: 6 1's
如果有一个数字序列至少重复6次肯定是无效的, 就像最后一种情况,如果有办法让它更短
我有这个正则表达式:([0-9]+1{6,}+)|(^1{6,}+[0-9]+)
案例3:
1212121212121
0101010101010
1231231231231
像论文这样的模式一定是无效的。
我不知道如何编写这个正则表达式。
【问题讨论】:
-
我认为您应该给出确切的验证规则。因此,我们将帮助您为其构建一个好的正则表达式
-
类似this?
-
试试
NOT REGEXP_LIKE(col, '([0-9]+)\1{5}')。 -
是什么让案例 3 有效或无效?不同位数的数量?重复序列?请详细说明。
-
12、10、123等重复的数字序列