RegularExpression属性不按预期工作

时间:2014-04-18 20:14:23

标签: regex asp.net-mvc-4 razor

嗨,我有这段代码

[RegularExpression(@"^[.\\\\/:*?\" + "<>" + "|]?[\\\\/:*?\"<>|]*",
 ErrorMessage = "Title must not contain any special characters")]

我想要它所以字符串除了空格之外不能有任何特殊字符,但我不确定为什么这不起作用?

编辑:

要确认,表单不会使用字符串输入提交:nospecialcharacters

无论是否有特殊字符,都会显示错误消息。

2 个答案:

答案 0 :(得分:1)

我还想进行验证,以消除Windows文件和文件夹名称中不允许的字符。

由于我使用的语言使用了一些“特殊”字符,如ŠČŽ,上面的答案确实为我工作。 "^[\w ]+$"将这些字母视为特殊字符 经过广泛的搜索后,我找不到正确的答案。

最后我解决了我的问题:

 [RegularExpression(@"[^|\\/:*?\u0022<>|]+$", ErrorMessage = "Title must not contain any special characters")]

\u0022代表

我在形成这个字符串时遇到了一些问题。我试过了:

  • @"[^|\\/:*?\"<>|]+"在中间结束了我的字符串
  • "[^|\\/:*?\"<>|]+"但忽略了反斜杠 \

答案 1 :(得分:0)

我无法真正了解您当前的正则表达式,但请记住,此属性指定该属性必须匹配正则表达式(而不是它必须匹配它)。因此,如果您不想要任何特殊字符,则需要指定该属性与以下模式匹配:

  • 字符串的开头
  • 仅限字符和空格
  • 字符串结尾

这样的事情应该这样做:

"^[\w ]+$"

将任何其他允许的字符(例如破折号)添加到方括号中。

您可能也可以省略^$个字符,因为我认为这些字符是隐含的;不过,我发现最好明确这些事情。