一位同事使用一个使用正则表达式验证数据输入字段的应用程序。
他需要允许用户从数字1-9中选择。
即。 1,2,3,...,12,13,...,23,24,......,...,123456789
明显的基本[1-9] {1,9}不会禁止重复数字或强制执行数字顺序。
数字不能重复(不允许11,343等),它们必须按数字顺序排列(不允许21,164等)。
没有单独匹配320种可能性“(1 | 2 | 3 | ... | 12 | 13 | ...)”,我怎样才能实现这一目标?
答案 0 :(得分:8)
^1?2?3?4?5?6?7?8?9?$
这一个?
显然,用户最多可以插入9位数(123456789),他可以从任何一个开始。任何数字都是可选的,但订单是固定的。
如果您想要一个数字,请使用前瞻
^(?=[1-9])1?2?3?4?5?6?7?8?9?$
或向后看
^1?2?3?4?5?6?7?8?9?(?<=[1-9])$
或负面展望
^(?!$)1?2?3?4?5?6?7?8?9?$
或负面看待
^1?2?3?4?5?6?7?8?9?(?<!^)$
所以至少需要一个数字
如果您的正则表达式语言没有展望(并且看后面),您可以这样做:
^12?3?4?5?6?7?8?9?|23?4?5?6?7?8?9?|34?5?6?7?8?9?|45?6?7?8?9?|56?7?8?9?|67?8?9?|78?9?|89?|9)$
现在第一个数字“分支”到以下可选数字的“有效”组合。