我需要一个匹配以下行的正则表达式:
123
12345
1234567
所以我知道字符串(7)的最大长度,并且该字符串在开头只能包含数字和空格。
我试过这个:[ 0-9]{7}
但是这个会匹配像12 34
答案 0 :(得分:3)
[ 0-9]{7}
将按任意顺序匹配7位数或空格,此模式可以返回部分匹配,因为它不会锚定在字符串的开头/结尾。
您可以使用限制字符串长度的前瞻,并使用顺序子模式:
^(?=[\s\d]{7}$)\s*\d*$
请参阅regex demo
模式细分:
^
- 字符串开头(?=[\s\d]{7}$)
- 仅当整个字符串由空格或/和全长7的数字组成时才匹配字符串\s*
- 0+空白符号\d*
- 0+位数$
- 字符串结束。答案 1 :(得分:1)
^(?= [\ s \ d] {7} $)\ s * \ d * $
看起来很好,并且会在给出的所有示例案例中匹配,同时将其FP概率降低到接近零。
虽然,我发现了一些可能FP的情况,特别是当字符串由7个空格或7个换行符或7个新标签组成时,我觉得有些不合预期。
演示:https://regex101.com/r/eH3jM6/2
所以,为了使它完美,让我们修改它:
^(?=[ \d]{7}$) {0,6}\d*$
更多参考:检查
https://www.talentcookie.com/2015/07/lets-practice-regular-expression/ https://www.talentcookie.com/2016/01/some-useful-regular-expression-terminologies/