如何制作正则表达式来检测 rupay 借记卡
How to make regular expression to detect rupay debit card
Ru 支付卡以以下 16 位数字开头
- 60
- 6521
- 6522
那么如何匹配这种格式以获得类型,因为它是 rupay 类型的借记卡
我试过这个正则表达式
/^(((60)([0-9]{14}))|((6521)([0-9]{12}))|((6522)([0-9]{12})))$/
要匹配两个范围,您可以从第一个模式中排除 011
,并从另一个模式中排除 521
和 522
。
排除 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位数字
$
字符串结尾
为什么不按照老式的方式来做呢?
Substr 和 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";
}
Ru 支付卡以以下 16 位数字开头
- 60
- 6521
- 6522
那么如何匹配这种格式以获得类型,因为它是 rupay 类型的借记卡
我试过这个正则表达式
/^(((60)([0-9]{14}))|((6521)([0-9]{12}))|((6522)([0-9]{12})))$/
要匹配两个范围,您可以从第一个模式中排除 011
,并从另一个模式中排除 521
和 522
。
排除 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位数字$
字符串结尾
为什么不按照老式的方式来做呢?
Substr 和 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";
}