如何阻止不同的单词组合

时间:2014-08-27 18:54:50

标签: .net regex asp.net-mvc

我正在使用Asp.net Mvc4并且我成功地使用RegularExpression来阻止坏词,但我的问题是,如果有人将那些坏词放在大写中然后它会通过,我怎么能阻止它? 这就是我所拥有的

[RegularExpression("^((?!(www|gamble|keygen|http)).)*$", ErrorMessage = "Invalid word")]

所以,如果有人提出 www ,它会阻止它,但如果他们把 Www WWW wWW 它会通过;有什么办法可以阻止一个单词的所有组合吗?

1 个答案:

答案 0 :(得分:0)

我想您不会使用它来进行客户端验证(我认为您不想将错误的单词列表发送给客户端,对吗?)。

在这种情况下,您可以通过将i添加到正则表达式来使用(?i)修饰符,因为RegularExpressionAttribute不支持外部提供的修饰符。请注意,这在JavaScript中不起作用(因为它不支持内联修饰符)。

但是,正如其他人所指出的那样,这种保护很容易被愚弄,更糟糕的是,你可以阻止合法的请求,所以要小心。例如,您应该使用\b锚来限制自己的整个单词,这样可以避免许多意外结果。