这个正则表达式:
^[a-zA-Z0-9 -.,()/\n/\r]+$
在 .NET 中总是匹配
“#”或“$”或“!”或“%”或“&”或“*”或“+”
所以要清楚,这一行:
Regex.IsMatch("!", @"^[a-zA-Z0-9 -.,()/\n/\r]+$");
返回真值。为什么会这样?
最佳答案
-
在字符类中使用时描述一个范围
因此您正在尝试匹配从 space
到 的字符。
将 -
移动到字符类的结尾或开头或将其转义 \-
现在指的是ascii table您正在指定从 ascii 十进制值 32 到 46 的范围,其中包括 !
,"
,#
,$
, %
........
所以,应该是
^[-a-zA-Z0-9 .,()/\n/\r]+$
^
或
^[a-zA-Z0-9 .,()/\n/\r-]+$
^
或者逃避它
^[a-zA-Z0-9 \-.,()/\n/\r]+$
^
关于.net - 正则表达式匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17428254/