Combining these two Regular Expressions into one

c#, regex

Solution

@"^(?=.*[a-zA-Z])(?=.*\d)"

 ^  # From the begining of the string
 (?=.*[a-zA-Z]) # look forward for any number of chars followed by a letter, don't advance pointer
 (?=.*\d) # look forward for any number of chars followed by a digit)

Uses two positive lookaheads to ensure it finds one letter, and one number before succeding. You add the `^` to only try looking forward once, from the start of the string. Otherwise, the regexp engine would try to match at every point in the string.

Problem

I have the following in C#: ``` public static bool IsAlphaAndNumeric(string s) { return Regex.IsMatch(s, @"[a-zA-Z]+") && Regex.IsMatch(s, @"\d+"); } ``` I want to check if parameter `s` contains at least one alphabetical character and one digit and I wrote the above method to do so. But is there a way I can combine the two regular expressions (`"[a-zA-Z]+"` and `"\d+"`) into one ?

Original source