"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])
- 00
到 29
和 40
到 99
,或 3
后跟 [=18 以外的数字=] 和 7
[0-9]{13}
- 十三位数
$
- 字符串结尾。
每次被问到这个问题时,答案都是像这样使用否定前瞻:(?!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])
-00
到29
和40
到99
,或3
后跟 [=18 以外的数字=] 和7
[0-9]{13}
- 十三位数$
- 字符串结尾。