正则表达式错误匹配

goj*_*ira 2 .net regex

这个正则表达式:

^[a-zA-Z0-9 -.,()/\n/\r]+$  
Run Code Online (Sandbox Code Playgroud)

在.NET中始终匹配

"#"或"$"或"!" 或"%"或"&"或"*"或"+"

所以要清楚,这一行:

Regex.IsMatch("!", @"^[a-zA-Z0-9 -.,()/\n/\r]+$");
Run Code Online (Sandbox Code Playgroud)

返回true.为什么会这样?

Ani*_*dha 10

-在字符类中使用时描述了一个范围

所以你试图匹配space到的字符.

移动-到字符类的结尾或开头或转义它\-

现在参照ASCII表要指定从ASCII十进制值32的范围内,直到46,其包括!,",#,$,%........


所以,它应该是

^[-a-zA-Z0-9 .,()/\n/\r]+$ 
  ^
Run Code Online (Sandbox Code Playgroud)

要么

^[a-zA-Z0-9 .,()/\n/\r-]+$   
                      ^
Run Code Online (Sandbox Code Playgroud)

或逃避它

^[a-zA-Z0-9 \-.,()/\n/\r]+$   
             ^
Run Code Online (Sandbox Code Playgroud)