【发布时间】:2015-05-20 19:22:27
【问题描述】:
有谁知道在 C# 中如何在字符串中查找信用卡号。 我想阻止用户在我们应用程序的 cmets 部分输入 CC# 并向用户发出警告
我在互联网上搜索的所有正则表达式只有在字符串包含信用卡号(“12345678910”)时才有效
例子
string comment ="客户打电话给他的信用卡号码 12345678910。我将为客户下订单"
在这种情况下,我想让用户知道该评论无法保存,因为它包含信用卡号
这是我拥有但不工作的示例代码
public class CreditCardValidator
{
public CreditCardValidator()
{
//These are the regex for all the avialble Credit cards.http://www.regular-expressions.info/creditcard.html
this.Patterns = new string[] { "^4[0-9]{12}(?:[0-9]{3})?$", "^5[1-5][0-9]{14}$", "^3[47][0-9]{13}$", "^3(?:0[0-5]|[68][0-9])[0-9]{11}$", "^6(?:011|5[0-9]{2})[0-9]{12}$","^(?:2131|1800|35\\d{3})\\d{11}$" };
}
public string[] Patterns { get; set; }
public bool HasCreditCardNumber(string input)
{
foreach (var pattern in Patterns)
{
if (Regex.IsMatch(input, pattern, RegexOptions.Multiline))
{
return true;
}
}
return false;
}
}
感谢您的帮助
【问题讨论】:
-
构建正则表达式,将输入与它进行比较,如果匹配则引发错误。问题出在哪里?
-
您将考虑哪些类型的信用卡? en.wikipedia.org/wiki/Bank_card_number您将不得不为每种类型的信用卡使用正则表达式。
-
您是否遇到过用户在 cmets 中输入信用卡号码的问题?如果是这样,这听起来像是一个培训/纪律问题,而不是应该通过尝试检测代码中的信用卡号码来解决的问题。
-
@Share1er80 ,我们处理所有主要的信用卡。这是我到目前为止的示例代码,但这似乎不起作用
-
@David Amo,我完全同意你的观点,但我输掉了这场战斗