如何取消正则表达式模式

时间:2018-11-06 18:52:11

标签: javascript regex regex-negation

因此,我有一个正则表达式,用于标识输入的无效模式,我希望能够将其反转,以便与其匹配无效案例,不将其与有效案例匹配。这是无效的正则表达式:

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

理想情况下,要匹配肯定的案例,应确保:

  • 6位数字
  • 同一位数字不会重复6次
  • 它不是按顺序递增或递减1

我曾尝试用负的前瞻性替换非捕获组,但是由于我不熟悉regex的更好语法,因此如果只是输入错误或需要在某个地方更改regex,我就不会肯定其他

编辑 虽然我知道这可以通过javascript处理,但我想使用regex来处理它,以利用Foundations的错误处理功能

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

/(?=^(\d){6}$)(?!^\1{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相匹配。