0
我遇到了超過4個字符的正則表達式匹配問題。我用4個字符嘗試過,它返回種類的真實。但是,如果超過4個字符,則返回種假。請讓我知道那裏發生了什麼。正則表達式匹配超過4個字符
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;
}
輸入:4744721015347572
(?<VisaDebit>4744) ==> return VisaDebit
(?<VisaDebit>4744**7**) ==> return null
對不起,你的問題有點不清楚。您唯一的示例字符串是'4744721015347572',並且您的正則表達式[顯示匹配(如果使用IgnoreWhitespace標記編譯)](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)* VisaDebit *組中有'4744'。是否可以? –