Joh*_*ohn 1 regex powershell scripting powershell-2.0
我有以下正则表达式,我用来匹配文件的字符串搜索中的各种信用卡号码.但是,如果要匹配的模式之前或之后有空格,则匹配将失败.
$CC_Regex = "^(\d{4}-){3}\d{4}$|^(\d{4} ){3}\d{4}$|^\d{16}$"
Run Code Online (Sandbox Code Playgroud)
例如,它将与前三个匹配,但与底部三个不匹配.
1111-2323-2312-3434
1234343425262837
1111 2323 2312 3434
1111-2323-2312-3434
1234343425262837
1111 2323 2312 3434
Run Code Online (Sandbox Code Playgroud)
在底部三个中,第一个在其末端有一个空格,第二个在它之前有一个空格,第三个在它之前和之后有一个空格.
在此先感谢您的帮助.
增加正则表达式来处理前端和后端的空格很容易:
^\s*(?:(\d{4}-){3}\d{4}|(\d{4} ){3}\d{4}|\d{16})\s*$
Run Code Online (Sandbox Code Playgroud)
但是接受字符串似乎更谨慎,删除除数字之外的所有内容,然后检查它是否是一个16位数字:
$result = $subject -creplace '[^0-9]+', ''
$found = $result -cmatch '^[0-9]{16}$'
Run Code Online (Sandbox Code Playgroud)
毕竟,谁知道人们可能有什么想法进行格式化 - 组之间有几个空格,空格和破折号等等......
归档时间: |
|
查看次数: |
5987 次 |
最近记录: |