C# Regex Issue “unrecognized escape sequence”

前端 未结 3 1556
你的背包
你的背包 2020-12-03 13:38

I have an issue with the regular expressions I\'m using but don\'t know how to continue with them. I get the error \"unrecognized escape sequence\".

I am trying to l

相关标签:
3条回答
  • 2020-12-03 14:04

    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.

    0 讨论(0)
  • 2020-12-03 14:10

    Add an additional '\' to unescape the escape. When it's processed it will then be interpreted in the manner you intended.

    0 讨论(0)
  • 2020-12-03 14:11

    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 ifs at the end to be a single if with an or (||) between the two conditions.

    0 讨论(0)
提交回复
热议问题