I need to validate Textbox input as credit card number. I already have regex for different credit cards:
^4[0-9]{12}(?:[0-9]{3})?$
^([51|52|53|54|55]{2})([0-9]{14})$
^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,
to combine two expressions or more, put every expression in brackets, and use: *?
Alternation is the term in regular expression that is actually a simple “OR”. In a regular expression it is denoted with a vertical line character | . For instance, we need to find programming languages: HTML, PHP, Java or JavaScript.
made this to find all with multiple #regular #expressions. regex1 = r"your regex here" regex2 = r"your regex here" regex3 = r"your regex here" regexList = [regex1, regex1, regex3] for x in regexList: if re. findall(x, your string): some_list = re. findall(x, your string) for y in some_list: found_regex_list.
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})`);
You can also use (?:)
for speedier execution (non-capturing grouping) but I have omitted that for readability.
Use the | operator and group all with parentesis ()
^(4[0-9]{12}(?:[0-9]{3})?|([51|52|53|54|55]{2})([0-9]{14})|3[47][0-9]{13})$
If all regex are correct it should work
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With