正则表达插入符号&符号工作,但不知道为什么

时间:2014-07-10 22:31:52

标签: java regex validation xss

我想阻止在我的spring mvc项目中输入一些特殊字符" < >

    @Pattern(regexp="[^&]")

它工作正常,但我不知道为什么。 (我仍然为正则表达式找到了很好的参考)

2 个答案:

答案 0 :(得分:1)

否定字符类

  • [^&]是一个否定的字符类,匹配一个字符,而不是&^是否为负数)
  • 仅限不包含<>"的字符串,将它们添加到否定字符类并使用锚点:
  • ^锚点断言我们位于字符串的开头
  • $锚点断言我们位于字符串的末尾

像这样:

^[^<>"]+$ 

使用matches方法,您不需要锚点:

if (subjectString.matches("[^<>\"]+")) {
    // It matched!
  } 
else {  // nah, it didn't match...  
     } 

答案 1 :(得分:1)

  

它完全正常。

doubt老实说..你的否定角色类匹配任何角色除了:&,如果你想阻止你指定的其他角色,请将它们添加到你的上课也是如此。

[^&"<>]   # any character except: '&', '"', '<', '>'

如果您想接受&,请将其从班级中删除。

[^"<>]

您可能还想使用quantifier来匹配多个匹配项。