如何匹配任何两个数字的正则表达式不是零?

Ale*_*ist 4 regex

示例:

01  =  match
10  =  match
99  =  match
00  =  no match
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这个:/^ [1-9][0-9] | [0-9][1-9] $/但我觉得它可以优化.

Wik*_*żew 7

您可以使用负向前瞻来限制通用[0-9]{2}模式:

^(?!00)[0-9]{2}$
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

[0-9]{2}将完全匹配2位数.该(?!00) 负前瞻将一次在字符串的开始执行,将确保没有00,直到字符串结束.如果字符串等于00,则不会找到匹配项.

Negative Lookahead的工作原理中查看更多信息.

详细的模式说明:

  • ^ - 字符串的开头
  • (?!00)- 如果0在当前位置之后有两个s(在字符串的开头),则表示匹配失败的否定前瞻.由于下一个子模式 - [0-9]{2}$只允许字符串中的2个符号,我们不必在前瞻中添加任何锚点,在其他情况下,必须添加$到仅排除00匹配.
  • [0-9]{2}- 正好两个(由于限制量词{min(,max)?})数字(在大多数口味中,[0-9]可以替换为\d,但在某些口味中\d也可以比常规更多[0123456789])
  • $- 字符串的结尾(取决于正则表达式的味道,\z因为它匹配字符串的最末端,因此可能更好).