我正在寻找一种使用C#检测字符串中的信用卡的方法。正则表达式是一种可能性。我不想检测字符串是否是信用卡。
例如
string text = "Hi mum, here is my credit card 1234-1234-1223-1234. Don't tell anyone";
bool result = TextContainsCreditCard(text);
if (result)
throw new InvalidOperationException("Don't give people your credit card!");
答案 0 :(得分:4)
您可以使用正则表达式
(\d{4}[\s-]?){4}
并将您想要的任何字符作为分隔符添加到[\s-]
,现在它们只是空格和减号
这样就可以在任何位置(\d[\s-]?){16}
中使用分隔符1 2341234-12341 234
答案 1 :(得分:1)
好吧,如果你的分隔符只有空格或 - ,那么检测信用卡的正则表达式将是
([0-9]{4}(-| )){3}[0-9]{4}
或者可能有更短或更好的选择。
答案 2 :(得分:0)
我已经起草了这个算法(仅作为评论放置,但格式不正确)
答案 3 :(得分:0)
您可以使用以下正则表达式来执行此操作
(\d{4}-?){4}
以下是grep。
的示例输出$ echo "Hi mum, here is my credit card 1234-1234-1223-1234. Don't tell anyone"|grep -Po "(\d{4}-?){4}"
1234-1234-1223-1234