using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.IO; using System.Text; public class Test { public static void Main() { string phoneNumber = "1122"; // "1122" failed Dictionary subPatterns = new Dictionary(); subPatterns[@"(?<1>\d)\k<1>(?<2>\d)\k<2>"] = "abba"; subPatterns[@"(?<1>\d)(?<2>\d)\k<2>\k<1>"] = "aabb"; string pattern = string.Join("|", subPatterns.Select(e => e.Key)); foreach (Match m in Regex.Matches(phoneNumber, pattern)) { if (m.Success) { Console.WriteLine("TRUE"); } } } }