Java 黑名单上的一些特殊字符,并允许其他一切
我只想将字符串中的一些特殊字符(,%,$,^)列入黑名单,并允许其他所有字符。 我一直在尝试一些正则表达式,但它们不起作用。例如,[^%]但它不起作用Java 黑名单上的一些特殊字符,并允许其他一切,java,regex,Java,Regex,我只想将字符串中的一些特殊字符(,%,$,^)列入黑名单,并允许其他所有字符。 我一直在尝试一些正则表达式,但它们不起作用。例如,[^%]但它不起作用 String s = "script"; if(s.matches("[^%<>\\$]")){ System.out.println("valid"); }else{ System.out.println("invalid"); } String s=“script”; 如果
String s = "script";
if(s.matches("[^%<>\\$]")){
System.out.println("valid");
}else{
System.out.println("invalid");
}
String s=“script”;
如果(s.matches(“[^%\\$]”){
System.out.println(“有效”);
}否则{
System.out.println(“无效”);
}
请提出一些解决办法
我只想将字符串中的一些特殊字符(,%,$,^)列入黑名单,并允许其他所有字符。
您可以使用此正则表达式:
^[^%<>^$]+$
请显示您已尝试的内容您认为
s.matches(“[^%\\$]”)应该做什么以及您期望的结果是什么?@skiwi:字符类内部[和]不需要转义。它应该对字符串s=”有效。请参阅工作演示:没有
无效,因为您只编写了一些特殊字符的黑名单(,%,$,^)
无效,因为它包含您列入黑名单的字符。但在这两种情况下,它都打印无效…例如:“script”应该有效,“should”应该无效。但在这两种情况下,它都显示为无效
String s = "script";
if( s.matches("[^%<>^$]+") ) {
System.out.println("valid");
} else {
System.out.println("invalid");
}