Necesito validar la entrada del cuadro de texto como número de tarjeta de crédito. Ya tengo expresiones regulares para diferentes tarjetas de crédito:¿Puedo "combinar" 2 regex con una lógica o?
- 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}$
y muchos otros.
El problema es que quiero validar el uso de diferentes expresiones regulares basadas en diferentes usuarios. Por ejemplo: para el usuario 1, Visa y Mastercard están disponibles, mientras que para el usuario 2, Visa y American Express están disponibles. Así que me gustaría para generar una cadena de expresiones regulares última forma dinámica, la combinación de una o más expresiones regulares cadena arriba, como:
user1Regex = Visa regex + "||" + Mastercard regex
user2Regex = Visa regex + "||" + American Express regex
¿Hay una manera de hacer eso? Gracias,
1 para '(:)' 'que trabaja con (?:? foo | bar)' para la lógica o con cuerdas | Caracteres múltiples caracteres – n611x007
Probé esto, y 'Visaregex' necesita ser cortado o de lo contrario las barras se incluirán literalmente en la combinación. en otras palabras, si 'Visaregex ==/ab + c /' y 'Mastercardregex ==/de + f /' entonces 'user1Regex' terminaría siendo'/(\/ab + c \ /) | (\/de + f \ /)/', no'/(ab + c) | (de + f)/'como quisiéramos. Así que cambiaría su respuesta a: 'let user1Regex = new RegExp (\' ($ {Visaregex.toString(). Slice (1, -1)}) | ($ {Mastercardregex.toString(). Slice (1, - 1)}) \ ');'. – chharvey