匹配正则表达式有条件

时间:2015-12-14 21:53:06

标签: regex

我需要有关正则表达式模式的帮助。 如果结尾的第5位数 1-9 ,则需要捕获最后5位, 如果第5位形成结尾 0 ,那么它需要捕获最后4位

样品

  • ;135206701? //应该匹配6701
  • ;135216701? //应该匹配16701
  • ;135236701? //应该匹配36701
  • ;135208701? //应该匹配8701

这是我到目前为止所做的,但它只能正确捕获 5位(中间2个样本)的项目

(?<idnumber>(?!0)[0-9]{5})\?

2 个答案:

答案 0 :(得分:4)

(?:[1-9]|(?<=0))\d{4}(?=\?$)

See it in action

这个想法是:

  • 匹配 1-9 数字[1-9])或(|)是否存在 0 (?<=0)
  • 后跟四位数 \d{4}
  • 后面是问号行的末尾 (?=\?$)

答案 1 :(得分:1)

你可以使用这个:

([1-9][0-9]{0,4}|0)\?

demo