Muszę zweryfikować dane wejściowe Textbox jako numer karty kredytowej. Mam już regex dla różnych kart kredytowych:Czy mogę "połączyć" 2 wyrażenia regularne z logiką lub?
- wizy:
^4[0-9]{12}(?:[0-9]{3})?$
- Mastercard:
^([51|52|53|54|55]{2})([0-9]{14})$
- American Express:
^3[47][0-9]{13}$
i wiele innych.
Problem polega na tym, że chcę sprawdzić poprawność za pomocą różnych wyrażeń regularnych na podstawie różnych użytkowników. Na przykład: dla użytkownika 1 dostępne są karty Visa i Mastercard, natomiast dla użytkownika 2 dostępne są karty Visa i American Express. Więc chciałbym, aby wygenerować ostateczny regex ciąg dynamicznie, łącząc jeden lub więcej regex ciąg powyżej, jak:
user1Regex = Visa regex + "||" + Mastercard regex
user2Regex = Visa regex + "||" + American Express regex
Czy istnieje sposób to zrobić? Dzięki,
+1 dla '(:)' 'która współpracuje z (?:? foo | bar)' za logiczny lub ze sznurkami | wiele znaków chatu – n611x007
Przetestowałem to, a 'Visaregex' musi zostać pokrojony, inaczej ukośniki zostaną włączone dosłownie do kombinacji. innymi słowy, jeśli 'Visaregex ==/ab + c /' i 'Mastercardregex ==/de + f /' to 'user1Regex' kończy się na'/(\/ab + c \ /) | (\/de + f \ /)/', nie'/(ab + c) | (de + f)/'jak chcieliśmy. Więc zmieniłbym twoją odpowiedź na: 'let user1Regex = new RegExp (\ {{Visaregex.toString(). Slice (1, -1)}) | ($ {Mastercardregex.toString(). Slice (1, - 1)}) \ ');'. – chharvey