带有斜杠但没有逗号的实体框架正则表达式

时间:2013-05-29 03:57:53

标签: .net regex entity-framework validation

我有一个实体框架模型,我已经进行了一些验证,特别是正则表达式接受字母数字,空格和一些标点符号。但是,当尝试添加斜杠“/”作为可接受的字符时,它似乎允许一些其他不可接受的字符(在本例中为逗号)。

表达式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”会接受斜线,但不是逗号,但看起来肯定不是这样。

2 个答案:

答案 0 :(得分:1)

' - '字符必须是字符类中的最后一个字符,如果不是,它定义了一系列可接受的字符:[\ w \ s。()&'/ - ] +'

答案 1 :(得分:1)

这是因为破折号-。字符类中的破折号表示范围例如 a-z0-9。 (这是一个不是词典而是基于ASCII的范围。如果你看an ASCII table,你会看到逗号,(44)位于非方向性撇号{{1}之间。 }(39)和正斜杠'(47)。)你需要将/作为你的字符类的第一个或最后一个字符,以免它被解释为一个范围。