Je dois valider l'entrée Textbox comme numéro de carte de crédit. J'ai déjà regex pour différentes cartes de crédit:Puis-je "combiner" 2 regex avec une logique ou?
- Visa:
^4[0-9]{12}(?:[0-9]{3})?$
- Mastercard:
^([51|52|53|54|55]{2})([0-9]{14})$
- American Express:
^3[47][0-9]{13}$
et bien d'autres.
Le problème est, je veux valider en utilisant différents regex basé sur différents utilisateurs. Par exemple: Pour l'utilisateur 1, Visa et Mastercard sont disponibles, tandis que pour l'utilisateur 2, Visa et American Express sont disponibles. Donc, je voudrais générer une chaîne de regex finale dynamique, combinant un ou plusieurs chaînes regex ci-dessus, comme:
user1Regex = Visa regex + "||" + Mastercard regex
user2Regex = Visa regex + "||" + American Express regex
Est-il possible de le faire? Merci,
+1 pour '(:)' qui fonctionne avec '(? foo | bar)' pour logique ou avec des cordes | plusieurs caractères caractères – n611x007
J'ai testé cela, et 'Visaregex' doit être découpé en tranches ou sinon les barres obliques seront incluses littéralement dans la combinaison. en d'autres termes si 'Visaregex ==/ab + c /' et 'Mastercardregex ==/de + f /' alors 'user1Regex' finirait par être'/(\/ab + c \ /) | (\/de + f \ /)/', pas'/(ab + c) | (de + f)/'comme nous le voulions. Donc, je voudrais changer votre réponse à: 'let user1Regex = new RegExp (\' ($ {Visaregex.toString(). Tranche (1, -1)}) | ($ {Mastercardregex.toString(). Tranche (1, - 1)}) \ ');'. – chharvey