im пытается понять это регулярное выражение, написанное для получения визы, но у меня возникла проблема с пониманием группы группировки и группы, не участвующей в записи.Regex для кредитных карт
Все номера карт Visa начинаются с 4. Новые карты имеют 16 цифр. Старые карты имеют 13.
^4[0-9]{12}(?:[0-9]{3})?$
я понимаю эту часть:
^4[0-9]{12}
и знак вопроса в конце (потому что последние 3 цифры не являются обязательными) , но я не понимаю, почему мы должны группа последняя часть, а также, если мы делаем это, почему нам нужно включать
?:
я имею в виду, если есть больше 3 цифры мы должны захватить их, так почему мы используем группу без захвата?
У меня есть группировка, но я до сих пор не понимаю, почему нам нужно использовать группы, не захватывающие их, испытывая регулярное выражение на обеих кредитных картах 13-16 и оба «4 [0-9] {12} (? : [0-9] {3}) «? и '4 [0-9] {12} ([0-9] {3})?' работа – Micheal
здесь группа, не связанная с захватом, увеличивает производительность по сравнению с группой захвата (которая хранит символы в временном буфере). –