在字符串中查找信用卡

时间:2014-11-19 12:48:03

标签: c# regex

我正在寻找一种使用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!");

4 个答案:

答案 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)

我已经起草了这个算法(仅作为评论放置,但格式不正确)

  1. 在( - )
  2. 上拆分字符串
  3. 查看字符串是否包含数值。
  4. 查看是否有4个以上的部分
  5. 查看零件[0] +零件[1](即连续四个)
  6. 如果是,返回true,否则返回false?

答案 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