正则表达式匹配捕获组中的特定数字

Regex matches specific number in capturing group

我想了解如何实现匹配捕获组中特定数字的正则表达式,该数字后跟逗号或绝对数字。

我构建了这个正则表达式:

(0) (\*|16) (\*) (\*) (\*|1|(,[1]))

这个正则表达式匹配一些无效的模式,因为我想确保我在字符串的第五组上有任何数字 1

示例:

0 16 * * 4,6,1 # Valid 
0 16 * * 4,1,6 # Valid
0 * * * 3,1    # Valid
0 16 * * 6     # Invalid
0 * * * *      # Valid
0 16 * * 1,3,6 # Valid
0 16 * * 1     # Valid
0 16 * * 11    # Invalid 

目前匹配到的是:

0 * * * *      # Correct
0 16 * * 1,3,6 # Correct
0 16 * * 1     # Correct
0 16 * * 11    # Wrong

有什么办法可以解决这个问题吗?谢谢!

(0) (\*|16) (\*) (\*) (\*|1|.*,1|1,.*|.*,1,.*)$

如果我们关注最后一部分,我们有:

\*
1
.*,1
1,.*
.*,1,.*

最后的 $ 对于前 3 种情况很重要,可以防止例如11*1

希望这是你想要的 ;)