我需要理解以下正则表达式的语法来构建我自己的字母以进行测试:
3[4,7][0-9]{2}[-, ]?[0-9]{2}([0-9]{4})[-, ]?([0-9]{5})
我正在尝试了解美国信用卡号码,以便验证信用卡号码。可能的有效输入应为数字378282246310005。
答案 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}
要赶快离开,我的出租车刚刚抵达,所以其他人可以完成这件事:)