Can I "combine" 2 regex with a logic or?

regex

Solution

You did not state your language but for whatever reason I suspect it's JavaScript. Just do:

var user1Regex = new RegExp('(' + Visaregex + ")|(" + Mastercardregex + ')');
// or if es6:
let user1Regex = new RegExp(`(${Visaregex})|(${Mastercardregex})`);

This simply combines the two patterns with a pipe `|` character, which indicates alternative matches. Each pattern is also wrapped in parentheses to group them.

You can also use `(?:)` for speedier execution (non-capturing grouping) but I have omitted that for readability.

Problem

I need to validate Textbox input as credit card number. I already have regex for different credit cards: - 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}$` and many others. The problem is, I want to validate using different regex based on different users. For example: For user1, Visa and Mastercard are available, while for user2, Visa and American Express are available. So I would like to generate a final regex string dynamically, combining one or more regex string above, like: ``` user1Regex = Visa regex + "||" + Mastercard regex user2Regex = Visa regex + "||" + American Express regex ``` Is there a way to do that? Thanks,

Original source