我是Regex的新手。
我创建了一个正则表达式:
.*\d{8,}.*\r?\n
当他们有8位或更多位时会删除这些行,但我希望它能在相反的情况下工作。
我想删除少于8位的人。
我知道它可能很简单,但我无法找到如何做到这一点。
你能帮我复习一下吗?
答案 0 :(得分:2)
这应该有效:
^(\D*\d\D*){0,7}$
它允许线上有许多非数字字符(\D
),但确保不超过7位。
答案 1 :(得分:2)
我用
^(?:\D*\d){0,7}\D*$
请参阅regex demo
<强>详情:
^
- 字符串的开头(?:\D*\d){0,7}
- 0到7序列:
\D*
- 0+非数字\d
- 数字\D*
- 0+非数字$
- 字符串结束。由于开始时的\D*
包含在非捕获组中(因此“重复”),并且最后一个不在组内(不是“重复”) “)模式是线性执行的,并且不会造成太大的减速,因为引擎不需要考虑将哪个组放置非数字符号。
答案 2 :(得分:0)
使用否定前瞻:
^(?!.*\d{8,}.*).*$