Q:

Would a regex lookaround work to match one or two numbers?

I am taking in a user input (string) and checking it against 3 different reg ex patterns.  The reason for this is we are doing asynchronous validation and the validation function is firing on every key up.  The user input string concatenations, so is longer with each iteration.
The regex should match 1 to 3 digit numbers, then a space, then again 1 to 3 digit numbers. Examples:
Correct: 
1 
12
12 26
123 12

Incorrect
any letter or spec character
any space before a number (space after first set of numbers is ok).

The following function works:
    static void Main(string[] args)
    {
        string userInput = Console.ReadLine();

        List<string> patternList = new List<string>();
        patternList.Add(@"^([0-9])$");
        patternList.Add(@"^[0-9]{1,3} $");
        patternList.Add(@"^[0-9]{1,3} [0-9]{1,3}$");

        ValidateInput(userInput, patternList);
    }

    private static void ValidateInput(string userInput, List<string> patternList)
    {
        Regex r = null;
        Match m = null;
        bool IsMatch = false;
        foreach (var p in patternList)
        {
            r = new Regex(p);
            m = r.Match(userInput);
            IsMatch = m.Success;
            if (IsMatch)
                break;
        }                       

        if (IsMatch)
        {
            Console.WriteLine("You wrote: {0} Thats a match", userInput);
            Console.ReadLine();
        }
        else
        {
            Console.WriteLine("You wrote: {0} Thats NOT a match", userInput);
            Console.ReadLine();
        }
    }

But I am looking to see if one expression (instead of 3) can be used. Would lookarounds, like a negative look behind later in the expression to make sure there is a number preceding the space? 

A:

You don't need lookaround at all, you can simply compress the three regexes into a single one:
^([0-9]{1,3})(?: ([0-9]{1,3})?)?$

?: means it is a non-capture group, so the first matching group will capture the first number, and the second capture group evidently the second.
In case the space sequence between the two numbers is arbitrary (one or more spaces, tabs, whatever), you can also use:
^([0-9]{1,3})(?:\s+([0-9]{1,3})?)?$

instead.
Lookahead and lookbehind can evidently be used, but are making things way more complicated and harder to parse. Furthermore, lookahead is in many cases used for the and pattern, not the or pattern. The or pattern can also be implemented with the disjunction (|).

