"everything except 34,37" 的正则表达式没有负面前瞻

Regex for "everything except 34,37" WITHOUT negative lookahead

每次被问到这个问题时,答案都是像这样使用否定前瞻:(?!x)

很遗憾,我必须在 vb6 中实现美国运通支票,它不支持负向前瞻或负向后视。

是否可以使用最古老的正则表达式实现来匹配除 34、37 之外的所有内容?

我希望这种事情能奏效: ^[1,2,4-9][1-3,5-6,8-9][0-9]{13}$

当然,我已经能够将 AmEx 与此表达式匹配:^3[47][0-9]{13}$ 但我还没有找到反转验证规则的方法。

这是我的验证器设置:

       <asp:RegularExpressionValidator
            ID="AmExValidator"
            Display="None"
            ControlToValidate="txtCreditCardNumber"
            ValidationExpression="^[1,2,4-9][1-3,5-6,8-9][0-9]{13}$"
            ErrorMessage="American Express cards are not accepted."
            ValidationGroup="Payment"
            runat="server">
        </asp:RegularExpressionValidator>```

您可以使用

^([0-24-9][0-9]|3[0-35689])[0-9]{13}$

regex demo详情:

  • ^ - 字符串开头
  • ([0-24-9][0-9]|3[0-35689]) - 00294099,或 3 后跟 [=18 以外的数字=] 和 7
  • [0-9]{13} - 十三位数
  • $ - 字符串结尾。