C# Regex Issue "unrecognized escape sequence"
Use @
to make the strings no longer use the escape character \
:
string regexPattern1 = @"^(\d{3}\.){2}\d{4}$";
string regexPattern2 = @"^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$";
As a side note, I think you want the two if
s at the end to be a single if
with an or (||
) between the two conditions.
Add an additional '\' to unescape the escape. When it's processed it will then be interpreted in the manner you intended.
The problem is not the regex, but the string. Before compiling it to a regex with the call to IsMatch(), the text you enter is still a normal string and it must obey the language rules.
\d in your language is not a recognized escape sequence, hence the error. You can either double backslashes (\ is the escape sequence to get a ) or, as Blindy pointed out, you can prefix your constant strings with a @, telling the compiler that it should not try to interpret anything looking like an escape sequence to it.