As militiaware writes, the Regex capabilities in .NET do not offer the option to find the place where the Regex fails to match. However, you could write your own regular expression parser to find the "best match" to your string and, then, you will know which character failed. I recommend this book, especially Chapter 8, "Parsing Regular Expressions": Title: Building Parsers With Java ISBN: 0201719622 Though the code and examples are in Java, you can easily translate it to the .NET-supported language of your choice. The design of his parser has a bestMatch() method that will return the string that best matches your given input, in this case, "[0-9][0-9]-[0-9][0-9][0-9]". "we must lose precision to make significant statements about complex systems." -deKorvin on uncertainty