Ru支付卡从以下16位数字开始
那么,如何将这种格式与获取类型匹配,因为它是rupay类型的借记卡
我试过用这个正则表达式
/^(((60)([0-9]{14}))|((6521)([0-9]{12}))|((6522)([0-9]{12})))$/发布于 2020-03-21 08:42:47
要匹配这两个范围,您可以从第一个模式中排除011,从另一个模式中排除521和522。
若要将rupay卡的011排除在外:
^6(?!011)(?:0[0-9]{14}|52[12][0-9]{12})$解释
^6开始和匹配6(?!011)断言011不是直接在右边(?:非捕获群0[0-9]{14}匹配0和14位数字|或52[12][0-9]{12}匹配521或522和12位数字
)紧群$末端将521和522从发现卡中排除在外
^6(?!52[12])(?:011|5[0-9][0-9])[0-9]{12}$解释
^6开始和匹配6(?!52[12])断言521或522不是直接向右(?:非捕获群011匹配011|或5[0-9][0-9]匹配5次和2次数字0-9
)紧群[0-9]{12}匹配12位数字$末端发布于 2020-03-21 08:54:49
为什么不用老式的方式做呢?
Substr和a if会把工作做得很好。在我看来更容易读懂。
if(strlen($card) == 16 &&
(substr($card, 0,2) == "60") ||
substr($card, 0,4) == "6521") ||
substr($card, 0,4) == "6522"))){
echo "it's ru pay card";
}https://stackoverflow.com/questions/60785582
复制相似问题