Pet*_*teB 1 regex regex-negation
同事使用使用正则表达式验证数据输入字段的应用程序.
他需要允许用户从数字1-9中进行选择.
即1,2,3,...,12,13,......,23,24,......,......,123456789
显而易见的基本[1-9] {1,9}不会禁止重复数字或强制执行数字顺序.
数字不能重复(不允许11,343等),它们必须按数字顺序排列(不允许21,164等).
没有单独匹配320种可能性"(1 | 2 | 3 | ... | 12 | 13 | ...)",我该如何实现这一目标?
^1?2?3?4?5?6?7?8?9?$
Run Code Online (Sandbox Code Playgroud)
这个?
显然,用户最多可以插入9位数字(123456789),他可以从任何一个开始.任何数字都是可选的,但订单是固定的.
如果您想要一个数字,请使用前瞻
^(?=[1-9])1?2?3?4?5?6?7?8?9?$
Run Code Online (Sandbox Code Playgroud)
或者看后面
^1?2?3?4?5?6?7?8?9?(?<=[1-9])$
Run Code Online (Sandbox Code Playgroud)
或负向前看
^(?!$)1?2?3?4?5?6?7?8?9?$
Run Code Online (Sandbox Code Playgroud)
或负面看后面
^1?2?3?4?5?6?7?8?9?(?<!^)$
Run Code Online (Sandbox Code Playgroud)
所以至少需要一个数字
如果您的正则表达式语言没有预见(并且看后面),您可以:
^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)$
Run Code Online (Sandbox Code Playgroud)
现在,第一个数字"分支"到以下可选数字的"有效"组合.