首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何生成正则表达式检测rupay借记卡

如何生成正则表达式检测rupay借记卡
EN

Stack Overflow用户
提问于 2020-03-21 07:49:40
回答 2查看 953关注 0票数 2

Ru支付卡从以下16位数字开始

  1. 60
  2. 六五二一
  3. 六五二二

那么,如何将这种格式与获取类型匹配,因为它是rupay类型的借记卡

我试过用这个正则表达式

代码语言:javascript
复制
/^(((60)([0-9]{14}))|((6521)([0-9]{12}))|((6522)([0-9]{12})))$/
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-21 08:42:47

要匹配这两个范围,您可以从第一个模式中排除011,从另一个模式中排除521522

若要将rupay卡的011排除在外:

代码语言:javascript
复制
^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位数字

  • )紧群
  • 字符串的$末端

Regex演示

将521和522从发现卡中排除在外

代码语言:javascript
复制
^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位数字
  • 字符串的$末端

Regex演示

票数 1
EN

Stack Overflow用户

发布于 2020-03-21 08:54:49

为什么不用老式的方式做呢?

Substr和a if会把工作做得很好。在我看来更容易读懂。

代码语言:javascript
复制
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";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60785582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档