带空格的 PCI 合规性正则表达式检测模式
PCI Compliance regex detect pattern with spaces
我必须生成一个正则表达式来检测涉及信用卡号的文本模式,我有一个正则表达式,但是当文本在文本之间用简单的 spaces 更改时失败,例如 (信用卡号无效):
4320 7589 9456 0123
正则表达式是:
4\d{3}(\s+|-)?\d{4}(\s+|-)?\d{4}(\s+|-)?\d{4}
这个正则表达式匹配很容易,但是如果有人在任何数字之间用 spaces 更改文本,如下所示:
4 320 7589 9456 0123
不匹配,我需要一个正则表达式来检测任何可能带有 space 的变量、特殊符号、字母、一些示例:
43 20 75 89 94 56 01 23
4 3 2 0 7 5 8 9 9 4 5 6 0 1 2 3
4320a7589b9456c0123
4320895623
4320_7589_9456_0123
我不知道是否可以从模式中剥离任何 space 符号来分析文本?
我发帖是因为您实际上寻求有关模式的帮助,以匹配第一个 4
和另外 15 个数字之间的任意数量的非数字。
模式是
^4(?:\D*\d){15}$
见demo
正则表达式细分:
^
- 字符串开头
4
- 文字 4
(?:\D*\d){15}
- 出现 15 次......
\D*
- 0 个或多个非数字符号之前..
\d
- 一个数字
$
- 字符串结尾
如果需要捕获,可以捕获(如^4((?:\D*\d){3})((?:\D*\d){4})((?:\D*\d){4})((?:\D*\d){4})$
),但子匹配仍将包含"junk"中间数字。
我必须生成一个正则表达式来检测涉及信用卡号的文本模式,我有一个正则表达式,但是当文本在文本之间用简单的 spaces 更改时失败,例如 (信用卡号无效):
4320 7589 9456 0123
正则表达式是:
4\d{3}(\s+|-)?\d{4}(\s+|-)?\d{4}(\s+|-)?\d{4}
这个正则表达式匹配很容易,但是如果有人在任何数字之间用 spaces 更改文本,如下所示:
4 320 7589 9456 0123
不匹配,我需要一个正则表达式来检测任何可能带有 space 的变量、特殊符号、字母、一些示例:
43 20 75 89 94 56 01 23
4 3 2 0 7 5 8 9 9 4 5 6 0 1 2 3
4320a7589b9456c0123
4320895623
4320_7589_9456_0123
我不知道是否可以从模式中剥离任何 space 符号来分析文本?
我发帖是因为您实际上寻求有关模式的帮助,以匹配第一个 4
和另外 15 个数字之间的任意数量的非数字。
模式是
^4(?:\D*\d){15}$
见demo
正则表达式细分:
^
- 字符串开头4
- 文字4
(?:\D*\d){15}
- 出现 15 次......\D*
- 0 个或多个非数字符号之前..\d
- 一个数字
$
- 字符串结尾
如果需要捕获,可以捕获(如^4((?:\D*\d){3})((?:\D*\d){4})((?:\D*\d){4})((?:\D*\d){4})$
),但子匹配仍将包含"junk"中间数字。