最简单的方法可能是前瞻性:
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]
这个版本说捕获一个数字,确保它不再重复两次,然后再捕获两个数字。