带有Lookbehind的正则表达式条件语句

时间:2015-04-29 04:04:28

标签: regex

所以我试图使用一个正则表达式,使用lookbehind来查找前一个字符,并对当前字符有条件。基本上如果前一个字符是1,则当前字符只能是5-9,或者如果前一个字符是9,则当前字符只能是0-4,否则它可以是任何数字。这是正在尝试的正则表达式,但它无效。

[1-9]((?(?<=1)[5-9]|[0-9])|(?(?<=9)[0-4]|[0-9]))$

1 个答案:

答案 0 :(得分:0)

如果您要将其嵌入更大的正则表达式中,这应该有效:

(?:[02-8]|1(?![^5-9])|9(?![^0-4]))+

我们的想法是在消费角色时进行检查:

  • 对于0和2-8,没有限制,所以只需消耗它们[02-8]
  • 对于1,如果前方角色(如果有) 5-9,我们想要消耗它,(?![^5-9])做到这一点。
  • 对于9,(?![^0-4])如果后面跟着0-4以外的某个字符,则不允许使用9。