2016-04-06 15 views
1

Farklı türde kredi kartlarına ait farklı sayılara bakıyorum.
Keşfedin: \b6(?:011|5[0-9]{2})[0-9]{12}\b
VISA: \b4[0-9]{12}(?:[0-9]{3})\b
Diners Club: Örneğin
\b3(?:0[0-5]|[68][0-9])[0-9]{11} \bDüzenli ifadede niçin alt gruplar arasındaki '-' veya boşluk neden başarısız oluyor?

Bazı insanlar koymak ister '-' basamak alt grupları arasındaki boşluğu veya kredi kartı numarası yazarken ve yukarıdaki RE'ler onları yakalamakta başarısız.
Örneğin: (?:\d[ -]*?){13,16}\b

Neden oluyor?

+2

Bu normal ifadeler boşluklarla veya kısa çizgilerle eşleşmiyor çünkü boşluklarla veya kısa çizgilerle eşleşmeye çalışmazlar. Onları nasıl yeniden yazacağını, böylece boşluk veya tire ile eşleşmelerini mi istiyorsunuz? –

+0

Evet, boşlukları ve kısa çizgileri eşleştirmeyi öğrenmek istiyorum. –

cevap

0

Yalnızca alt gruplar arasındaki boşlukları/kısa çizgileri açıkça isteyin. Orijinal ifadelerinizde bunlardan bahsetmediniz. kısalık için

6(?:011|5[0-9]{2})[0-9]{12} 

ben bırakmadım \b: Örneğin, Discover örüntü, sen bunu verdi. Bir şey eksik sürece [0-9] yerine \d kullanabilirsiniz:

6(?:011|5\d{2})\d{12} 

Bölünmüş ikincisi 12 basamağını dört üç gruba:

6(?:011|5\d{2})\d{4}\d{4}\d{4} 

Sonra boşluk koymak/tire arasında:

6(?:011|5\d{2})[ -]*\d{4}[ -]*\d{4}[ -]*\d{4} 

hangi şekilde çoğaltılmadan ifade edilebilir:

6(?:011|5\d{2})(?:[ -]*\d{4}){3} 

Benzer stratejiler diğerlerine uygulanabilir.

İlgili konular