Regex 匹配这些值(零除外)

Regex 匹配这些值(零除外),regex,Regex,我有下面的正则表达式^([0-9]{1,2})| 100 | 888 | 777 | 999)$ 这允许用户输入数字:0-99100888777999 现在我必须修改表达式以允许:1-99100888777999(现在基本上不允许为零) 我想做^(!0 |([0-9]{1,2})| 100 | 888 | 777 | 999)$。。。但这当然行不通,因为这就像说“如果不是零,我们就没事” 有什么建议吗 尝试将一位数与两位数的数字分开: ^([0-9]|([1-9][0-9])| 100 | 88

我有下面的正则表达式
^([0-9]{1,2})| 100 | 888 | 777 | 999)$

这允许用户输入数字:0-99100888777999

现在我必须修改表达式以允许:1-99100888777999(现在基本上不允许为零)

我想做
^(!0 |([0-9]{1,2})| 100 | 888 | 777 | 999)$
。。。但这当然行不通,因为这就像说“如果不是零,我们就没事”


有什么建议吗

尝试将一位数与两位数的数字分开:

^([0-9]|([1-9][0-9])| 100 | 888 | 777 | 999)$

然后删除0:

^([1-9]|([1-9][0-9])| 100 | 888 | 777 | 999)$

既然你已经做到了,有一个明显的方法可以简化它:

^([1-9][0-9]?)| 100 | 888 | 777 | 999)$

因此,twain249,如果您想读取前面有过多零的数字,但不希望匹配包含它们:


^0*([1-9][0-9]?)| 100 | 888 | 777 | 999)$

这应该可以实现您想要的:

^(([1-9][0-9]?)|100|888|777|999)$

^([1-9][0-9]?)| 100 | 888 | 777 | 999$

你试过[1-9]{1,2}而不是[0-9]{1,2}了吗?@MarshallConover,这行不通,因为它不会将任何2位数字与其中的0相匹配。我不知道他是否想删除像
02
这样的数字,但修改你的正则表达式来处理这个问题很容易。谢谢你向我展示你的思考过程。。。正在等待将此标记为答案的功能:P@twain249我没有想到这个问题,但这是给其他人的([0-9][1-9]{1})|([1-9][0-9]?)| 100 | 888 | 777 | 999)$