我有一个实体框架模型,我已经进行了一些验证,特别是正则表达式接受字母数字,空格和一些标点符号。但是,当尝试添加斜杠“/”作为可接受的字符时,它似乎允许一些其他不可接受的字符(在本例中为逗号)。
表达式1:
[RegularExpression(@"[\w\s.()&'-]+", ErrorMessage = "Contains an illegal character")]
这适用于除正斜杠之外的所有预期字符(即它不接受逗号,但也不接受斜杠)
表达式2:
[RegularExpression(@"[\w\s.()&'-/]+", ErrorMessage = "Contains an illegal character")]
现在接受斜线(好)但现在也接受逗号(不需要)
表达3:
[RegularExpression(@"[\w\s.()&'-\/]+", ErrorMessage = "Contains an illegal character")]
企图逃避正斜杠。与experssion 2相同,接受斜杠和逗号
这只是一些奇怪的逃避或类似的技巧我需要做什么? .Net正则表达式的一些副作用?我的印象绝对是“表达式2”会接受斜线,但不是逗号,但看起来肯定不是这样。
答案 0 :(得分:1)
' - '字符必须是字符类中的最后一个字符,如果不是,它定义了一系列可接受的字符:[\ w \ s。()&'/ - ] +'
答案 1 :(得分:1)
这是因为破折号-
。字符类中的破折号表示范围,例如 a-z
或0-9
。 (这是一个不是词典而是基于ASCII的范围。如果你看an ASCII table,你会看到逗号,
(44)位于非方向性撇号{{1}之间。 }(39)和正斜杠'
(47)。)你需要将/
作为你的字符类的第一个或最后一个字符,以免它被解释为一个范围。