正则表达式或案例

时间:2017-10-17 04:01:52

标签: regex

我正在尝试为这种情况计算正则表达式:

ID必须以字母“M”开头,以3位数结尾,但不允许使用三位零。

我试过

M(00[1-9])

但这只能阻止三重零,我怎样才能满足其他数字?

1 个答案:

答案 0 :(得分:3)

最简单的方法可能是前瞻性:

M(?!0{3})\d{3}

[Regex101]

这匹配文字M,检查下一个不是三重零,然后匹配三个数字。

如果要阻止一组特定的数字,可以修改前瞻以检查特定的重复数字(0,2,5,这里):

M(?!([0256])\1{2})\d{3}

[Regex101]

要检查所有三位数,请将[0256]替换为\d。这个正则表达式使前瞻检查一个数字,然后测试它是否使用反向引用重复两次。

一种不太冗余的方法可能是将捕获组放在前瞻之外:

M(\d)(?!\1{2})\d{2}

[Regex101]

这个版本说捕获一个数字,确保它不再重复两次,然后再捕获两个数字。