要匹配这些示例:
1-10-1
1-7-3
10-8-5
1-7-14
11-10-12
这个正则表达式有效:
^[\\d]{1,2}-[\\d]{1,2}-[\\d]{1,2}$
如何以仅匹配“[\d]{1,2}-?
”三 (n) 次之类的方式编写此内容?
最佳答案
您可以使用:
^\d\d?(?:-\d\d?){2}$
查看在线 demo 。
^
- 起始线 anchor 。\d\d?
- 一个数字后跟一个可选数字(与\d{1,2}
相同)。(?:-\d\d?){2}
- 以连字符开头的非捕获组,后跟与上述相同的结构(一位或两位数字)。捕获组恰好重复两次。$
- 结束字符串 anchor 。
这里的想法是避免在您所做的尝试中使用可选的连字符,因为本质上您会开始允许完全不同的事物,例如“123”和“123456”。更合适的做法是匹配分隔字符串的第一个元素,然后使用非捕获组来匹配分隔符和其余所需元素恰好 n-1 次。
关于正则表达式为 helm 匹配 n 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68031602/