需要正则表达式的解释

时间:2012-02-14 19:00:17

标签: regex

我需要理解以下正则表达式的语法来构建我自己的字母以进行测试:

3[4,7][0-9]{2}[-, ]?[0-9]{2}([0-9]{4})[-, ]?([0-9]{5})

我正在尝试了解美国信用卡号码,以便验证信用卡号码。可能的有效输入应为数字378282246310005。

2 个答案:

答案 0 :(得分:4)

3          - Match a single "3"
[4,7]      - Match one of "4", "," or "7"
[0-9]{2}   - Match 2 characters where each character is in the range '0' to '9'
[-, ]?     - Match an optional "-", "," or space
[0-9]{2}   - Match 2 characters where each character is in the range '0' to '9'
([0-9]{4}) - Match 4 characters where each character is in the range '0' to '9', 
           - and make the results available in $1
[-, ]?     - Match an optional "-", "," or space
([0-9]{5}) - Match 5 characters where each character is in the range '0' to '9',
           - and make the results available in $2

[4,7][-, ]可能是以逗号分隔的术语列表,但这不是字符集([...])的工作原理 - 你不要必须用逗号分隔匹配的字符。他们很可能分别是[47][- ]。也就是说,如果你想匹配“a”“b”“c”,你会写[abc] [a,b,c]

括号内的部分表示匹配组;如果模式匹配,则可以使用这些组匹配的特定子字符串(通常通过变量$1$2或某些“匹配”数组)。

答案 1 :(得分:1)

以3:3

开头

后跟4,逗号或7:3[4,7]

紧跟2位数字({2}正好意味着2位数):3[4,7][0-9]{2}

可能后跟短划线,逗号或空格(?表示可选):3[4,7][0-9]{2}[-, ]?

紧跟2位数字:3[4,7][0-9]{2}[-, ]?[0-9]{2}

要赶快离开,我的出租车刚刚抵达,所以其他人可以完成这件事:)