通过java中的正则表达式避免使用<script>标记和alert {}

时间:2016-01-21 07:14:25

标签: java regex

如果正则表达式与带有括号的&lt; Script&gt; 标记或alert()匹配,我想显示message-1“Script tag and alert is not allowed”。如果只有警报或脚本,则显示不同的消息-2“欢迎”。

&#xA;&#xA;

显示以下条件的消息-1:

&#xA;&# xA;
  1)&lt; script&gt;&#xA; 2)&lt;脚本&gt;&#xA; 3)&lt;脚本&gt;脚本&#xA; 4)&lt;脚本&gt;警告&#xA; 5)&lt;脚本&GT; alert()&#xA; 6)alert alert()&#xA; 7)alert()script&#xA; 8)alert&lt;脚本&gt;&#xA;  
&#xA;&#xA;

显示以下条件的消息-2:

&#xA;&#xA;
 <代码> 1)脚本脚本&#xA; 2)警报警报&#xA; 3)脚本警报&#xA; 4)警报警报脚本脚本&#xA; 5)警报脚本脚本&#xA;  
&# xA;&#xA;

我试过&lt; \ s * [script \ S * \ s *] + | \ S 警报\ S \(\ S *(。*?)\)。但它并不能满足所有条件。请帮帮我。

&#xA;

2 个答案:

答案 0 :(得分:0)

正则表达式:<\s*script\s*>|alert\s*\(\s*\)

<强>测试

private static void test(String input) {
    String regex = "<\\s*script\\s*>|alert\\s*\\(\\s*\\)";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(input);
    if (m.find()) {
        System.out.println("#1  " + input);
    } else {
        System.out.println("#2  " + input);
    }
}

<强>输出

#1  <script>
#1  <  script >
#1  < script > script
#1  <  script > alert
#1  < script> alert (  )
#1  alert alert( )
#1  alert () script
#1  alert <  script >
#2  script script
#2  alert alert
#2  script alert
#2  alert alert script script
#2  alert script script

答案 1 :(得分:0)

对于您的消息1部分(在regex101.com上演示):

(<\s*script\s*>)|(alert\s*\(\s*\))

对于您的留言2部分(在regex101.com上演示),简单如下:

(script|alert)