我正在尝试使用REGEX验证卡号。所有字符都必须是数字(0-9(,如果第一个数字是3,则数字的长度可以是15或16个字符,如果数字不是以3开头,则必须是16个字符。
有没有一种方法可以在纯regex中使用条件语句,而不是使用外部库?
类似于@withrp答案,但具有lookaheads
^(?=[3])([0-9]{15,16})|(?=[0-24-9])([0-9]{16})$
是的,您可以使用运算符|
(OR(使regex具有条件
/(^3d{14,15}$)|(^[^3]d{16}$)/
是的,使用这样的正则表达式可以将|
用作逻辑OR,并且可以简化初始条件:
String regex = "^(3\d{14}|\d{16})$";
其中:3\d{14}
-检查第一个条件-以3开头,可以是15个字符长(包括前导3(
或
\d{16}
-任意数字,严格为16个字符长的
在线演示