Ich habe ein Problem mit dem Regex Match mit mehr als 4 Zeichen. Ich habe versucht mit 4 Zeichen und es gibt Art der wahren zurück. Für mehr als 4 Zeichen gibt es jedoch Art der falschen zurück. Bitte lassen Sie mich wissen, was dort passiert ist.Regex Match mehr als 4 Zeichen
public static string CardRegex = @"^(?:(?<VisaDebit>4744)| (?<Discover>6011)| (?<Amex>3[47]\d{2}))([ -]?)(?(DinersClub)(?:\d{6}\1\d{4})|(?(Amex)(?:\d{6}\1\d{5})|(?:\d{4}\1\d{4}\1\d{4})))$";
public static CreditCardTypeType? GetCardTypeFromNumber(string cardNum)
{
var cardTest = new Regex(CardRegex);
var gc = cardTest.Match(cardNum).Groups;
if (gc[CreditCardTypeType.VisaDebit.ToString()].Success)
return CreditCardTypeType.VisaDebit;
if (gc[CreditCardTypeType.Discover.ToString()].Success)
return CreditCardTypeType.Discover;
return null;
}
Input: 4744721015347572
(?<VisaDebit>4744) ==> return VisaDebit
(?<VisaDebit>4744**7**) ==> return null
Sorry, Ihre Frage ist irgendwie unklar. Ihre einzige Probe String '4744721015347572' und Ihre regex [zeigt eine Übereinstimmung (wenn mit ignoreWhitespace Flag kompiliert)] (http://regexstorm.net/tester?p=%5e%28%3f%3a%28%3f% 3cVisaDebit% 3e4744% 29% 7c% 0D% 0A ++++++++% 28% 3f% 3cDiscover% 3e6011% 29% 7c% 0D% 0A ++++++++% 28% 3f% 3cAmex% 3E3% 5b47% 5D% 5CD% 7b2% 7d% 29% 29% 28% 5b + -% 5d% 3f% 29% 28% 3f% 28DinersClub% 29% 28% 3f% 3a% 5CD% 7B6% 7d% 5c1% 5CD% 7b4% 7d% 29% 7c% 28% 3f% 28Amex% 29 % 28% 3f% 3a% 5CD% 7B6% 7d% 5c1% 5CD% 7b5% 7d% 29% 7c% 28% 3f% 3a% 5CD% 7b4% 7d% 5c1% 5CD% 7b4% 7d% 5c1% 5CD% 7b4 % 7d% 29% 29% 29% 24 & i = 4744721015347572 & o = x) mit '4744' in * VisaDebit * Gruppe.Ist es OK? –