正则表达式/ s ^ $做什么?

时间:2013-12-06 16:17:48

标签: regex credit-card

所以我今天刚刚学习了正则表达式,我们没有达到这些符号 / s ^ $

我问的原因是,首先我想知道,但我的任务是为所有有效和普通的信用卡写一个正则表达式而且我被困在的问题是美国的快递卡少了1位数。并且不知道如何编写正则表达式,以便只有当前两位数字为37(仅限美国运通)时才允许使用15位数字。

然后我发现了这个:

^((4\d{3})|(5[1-5]\d{2})|(6011)|(34\d{1})|(37\d{1}))-?\s?\d{4}-?\s?\d{4}-?\s?\d{4}|3[4,7][\d\s-]{15}$

如果我从Visa拿一个工作CC让我们说(16位数)并减1,它不起作用,但15位数与美国快递一起工作,任何人都可以解释正则表达式中的内容吗?

1 个答案:

答案 0 :(得分:1)

正则表达式

^((4\d{3})|(5[1-5]\d{2})|(6011)|(34\d{1})|(37\d{1}))-?\s?\d{4}-?\s?\d{4}-?\s?\d{4}|3[4,7][\d\s-]{15}$

Regular expression visualization

Debuggex Demo

http://regex101.com/r/yO2sY0

这将在底部向您描述您的正则表达式...问题是您的正则表达式无效......

^这是字符串的结晶 $字符串的结尾 \s匹配空格(空格,制表符和新行)。 \ S被否定\ s。

由于以下

,正则表达式无效
  

从左到右解释错误。将鼠标光标移到它们上面以查看模式中突出显示的错误

     

- :无法使用速记属性形成范围

解决方案

使用此处记录的以下正则表达式http://www.regular-expressions.info/creditcard.html

^(?:4[0-9]{12}(?:[0-9]{3})?          # Visa
 |  5[1-5][0-9]{14}                  # MasterCard
 |  3[47][0-9]{13}                   # American Express
 |  3(?:0[0-5]|[68][0-9])[0-9]{11}   # Diners Club
 |  6(?:011|5[0-9]{2})[0-9]{12}      # Discover
 |  (?:2131|1800|35\d{3})\d{11}      # JCB
)$

Simplified Regex

\b(?:\d[ -]*?){13,16}\b