正则表达式,不允许使用除下划线之外的特殊字符和数字

时间:2013-05-07 17:23:36

标签: regex

我使用了一个不应该允许特殊字符和字母数字的正则表达式。所以我尝试了这个

String targetPage="Prestige$%$lll.jsp";
  String pattern1 = Pattern.compile(".*[0-9].*").toString();
  String pattern2 = Pattern.compile(".*[$!*&+,:;=?@#%'()^|-].*").toString();
  System.out.println("**** pattern1 is "+pattern1);
  System.out.println("**** pattern2 is "+pattern2);
  System.out.println("****"+targetPage.matches(pattern1));
   System.out.println("**&&&**"+targetPage.matches(pattern2));
 if ( targetPage == null || targetPage.matches(pattern1) || targetPage.matches(pattern2) || "".equals(targetPage) || (!targetPage.endsWith(".jsp") && !targetPage.endsWith(".xml")) ) 
 response.sendRedirect("/register.jsp");

工作正常。但是在某些情况下,如上所述,我的意思是$%$失败了。

非常感谢任何帮助

感谢

1 个答案:

答案 0 :(得分:1)

pattern2中有一些特殊字符需要转义才能匹配文字,如下所示:\\$

需要转义的特殊字符列表:[]\^$.|?*+()