正则表达式中的可选项

optionals in a look around regular expressions

我正在尝试找出如何使用正则表达式将选项值放入环视中。

这些值应该匹配

3
1000
15-20
2048-4096/100

这个值应该

3/4

我想在正则表达式中说“只有在 / 除号前有破折号 4 位数字和冒号时才匹配

例如:

  1. -9999/ 除号之前应该匹配
  2. 9999/ 不应该匹配,因为没有 -
  3. -/ 不应该匹配,因为没有数字

    ^[^0][0-9]*(-|:)?([0-9]*)?(?<=[0-9])(\/)?([0-9]*)$

我环顾四周只是为了寻找前面的数字,但如果我在其中输入 ?*,它就不再有效了。感谢您的帮助!!!

^\d+(?:[-:](?:\d{4}\/\d+|\d+))?$

如果我理解正确,

  • \d+ 以某个数字开头
  • (?: ...)?后跟以破折号或冒号开头的可选模式
  • \d{4}/\d+ 可选组中的数字可以是带斜杠的4位数字和另一个数字
  • \d+ 或者可选组可以是任何数字,如果它不以斜杠开头。