regex - 正则表达式并忽略空格

标签 regex scripting powershell powershell-2.0

我使用以下正则表达式来匹配文件字符串搜索中的各种信用卡号。但是,如果要匹配的模式之前或之后有空格,则匹配将失败。

$CC_Regex = "^(\d{4}-){3}\d{4}$|^(\d{4} ){3}\d{4}$|^\d{16}$"

例如,它将匹配前三名,但不匹配后三名。
1111-2323-2312-3434
1234343425262837
1111 2323 2312 3434

1111-2323-2312-3434 
 1234343425262837
 1111 2323 2312 3434 

在底部的三个中,第一个在其末尾有一个空格,第二个在其末尾有一个空格,第三个在其前后有一个空格。

在此先感谢您的帮助。

最佳答案

扩展正则表达式以处理前端和后端的空格将很容易:

^\s*(?:(\d{4}-){3}\d{4}|(\d{4} ){3}\d{4}|\d{16})\s*$

但采取该字符串,删除除数字外的所有内容,然后检查它是否为16位数字似乎更为谨慎:
$result = $subject -creplace '[^0-9]+', ''
$found = $result -cmatch '^[0-9]{16}$'

毕竟,谁知道人们可能对格式有什么想法-组之间的几个空格,空格和破折号的混合等...

关于regex - 正则表达式并忽略空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5782920/

相关文章:

xml - "XML is invalid"当 Get-CimInstance 与 -ComputerName 一起提供时

windows - 如何以与 "cmd/c <command>".execute() 相同的方式从 groovy 运行 PowerShell 命令?

python - 在文件中查找并替换

java - 正则表达式匹配如何工作?

Java 正则表达式用空格去除前导零和尾随零

用于替换文件中环境变量的 Windows 批处理脚本

powershell - 关闭由.NET打开的文件句柄

php - 循环 Preg_match 直到不再有匹配项

powershell - 使用 powershell 删除 .csv 文件中的最后一行

bash - 如何使用具有整数结果的变量来划分 float ?