Metin kutusu girişini kredi kartı numarası olarak doğrulamanız gerekiyor.2 regex'i bir mantıkla birleştirebilir miyim?
- Vize:
^4[0-9]{12}(?:[0-9]{3})?$
- Mastercard:
^([51|52|53|54|55]{2})([0-9]{14})$
- American Express:
^3[47][0-9]{13}$
ve diğerleri zaten farklı kredi kartları için regex var.
Sorun şu ki, farklı kullanıcılara dayalı farklı normal ifadeler kullanarak doğrulamak istiyorum. Örneğin: Kullanıcı1 için Visa ve Mastercard mevcuttur, kullanıcı2 için ise Visa ve American Express mevcuttur.
user1Regex = Visa regex + "||" + Mastercard regex
user2Regex = Visa regex + "||" + American Express regex
Bunu yapmanın bir yolu var mı: Ben gibi yukarıdaki bir veya daha fazla regex dize birleştirerek, dinamik bir son regex dize oluşturmak istersiniz? Teşekkürler,
+1 çalışması gerekir :)' ('çalışır:? foo | bar)' mantıksal veya dizeleri ile | Birden fazla karakter karakterleri – n611x007
Bunu test ettim ve Visaregex'in dilimlenmesi gerekiyor ya da eğik çizgi harfleri tam anlamıyla bir araya getirilecek. diğer bir deyişle, Visaregex ==/ab + c/'ve' Mastercardregex ==/de + f/'ise' user1Regex', '/ (\/ab + c \ /) | (\/de + f \ /)/','/(ab + c) | (de + f)/'istediğimiz gibi değil. Bu yüzden cevabınızı şöyle değiştirebilirim: 'kullanici1Regex = yeni RegExp (\' ($ {Visaregex.toString(). Dilim (1, -1)}) | ($ {Mastercardregex.toString(). Dilim (1, - 1)}) \ ');'. – chharvey