检查文件的行与正则表达式

Mik*_*ike -1 .net c# regex windows

我正在使用Regex.Match方法在文件中查找信用卡号(用于PCI合规性)

我通过文件的行(strLine)进行交互,并检查每个文件与正则表达式(m_strRegEx):

Regex.Match(strLine, m_strRegEx)

string strLine = "4111111111111111"
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果该行包含其他字符,例如strLine可能=:

string strLine = "fhj*4111111111111111op)"
Run Code Online (Sandbox Code Playgroud)

正则表达式然后没有选择cc号码,怎么可能克服这个问题?

我正在使用的正则表达式是:

^4[0-9]{12}(?:[0-9]{3})?$
Run Code Online (Sandbox Code Playgroud)

Joe*_*oey 5

这是因为你的正则表达式用和固定在字符串的开头和结尾.这意味着整个字符串必须与您的正则表达式匹配,而不仅仅是子字符串.^$

从正则表达式中删除^$执行子字符串匹配:

4[0-9]{12}(?:[0-9]{3})?
Run Code Online (Sandbox Code Playgroud)

快速测试:

PS> 'fhj*4111111111111111op)' -match '4[0-9]{12}(?:[0-9]{3})?'; $Matches
True

Name                           Value
----                           -----
0                              4111111111111111
Run Code Online (Sandbox Code Playgroud)