如何否定正则表达式模式

How to negate a regex pattern

所以我有一个正则表达式来识别我的输入的无效模式,我希望能够反转它,这样它就不会匹配无效的案例,而是匹配有效的案例。这是无效的正则表达式:

^(?=\d{6}$)(?:(\d){5,}|012345|123456|234567|345678|456789|567890|098765|987654|876543|765432|654321|54321)$

理想情况下匹配阳性病例应确保:

我已经尝试用否定的先行替换非捕获组,但是由于我不熟悉正则表达式的更精细语法,如果这只是一个输入错误或者我需要更改其他地方的正则表达式

编辑 虽然我知道这可以由 javascript 处理,但我想用正则表达式处理它以利用 Foundations 错误处理

您可以使用这个正则表达式:

/(?=^(\d){6}$)(?!^{6})(?!^(?:012345|123456|234567|345678|456789|567890|098765|987654|876543|765432|654321|54321)$)^\d+$/

正则表达式使用 look ahead 并从检查 6 digits 开始。它捕获与反向引用一起使用的 last digit 来检查,有 not 6 of the same digit。然后它使用 negative look ahead 与无效序列列表进行比较。

最终匹配 6 digits