正则表达式(急)

判断字符是否是除了 @ —— , ? “” | ~ % * !之外的其他符号?
[b]问题补充:[/b]
[^@——,?“”|~%*!]我试了一下好像不可以,下面是我测试大妈
[code="java"]
public boolean checkNameReg(String str) {
String badword = "[^@——,?“”|~%*!]";
Pattern pattern = Pattern.compile(badword);
Matcher matcher = pattern.matcher(str);
return !matcher.find();
}
[/code]

结果写错,不好意思.
刚才代码的结果如下:
[code="java"]str match result:false
str match result:true[/code]

如果只是判断单个字符的话,不用那么复杂吧,简单点

把几个符号并成数组,然后用数组的contains方法判断,或者把这些字符合并成一个字符串,然后用字符串的indexOf来判断。

如果是字符串再考虑正则吧,可以简单的用否

[^@|^_|^,|^?] 这样

[^@——,?“”|~%*!] it's okay.

不是吧. 本着科学的精神,我测试了一把;

代码如下:
[code="java"]import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class testMatch2{
public static boolean checkNameReg(String str) {

String badword = "[^@——,?“”|~%*!]";

Pattern pattern = Pattern.compile(badword);

Matcher matcher = pattern.matcher(str);

return matcher.find();

}

public static void main(String[] args){
    String str = "@——";
    System.out.println("str match result:"+checkNameReg(str));

    String str2 = "开始";
    System.out.println("str match result:"+checkNameReg(str2));

}

}[/code]

结果:
[code="java"]str match result:true
str match result:true[/code]