Pattern pa = Pattern.compile("^[0-9a-zA-Z_\u4e00-\u9fa5]+$");
Matcher m = null;
m = pa.matcher((String) request.getParameter("username"));
boolean flag = m.matches(); if (flag == false) {
out.println("用户名必须由:大小写英文,汉字,数字组成,请重新注册");
return;
}
名字输入  中国ghyghost123就提示出错,,,,按理说这个网名是正确的,怎么改正则?感谢

解决方案 »

  1.   

    SINCE1978(红杉树) 
    fosjos(无聊的菜鸟程序员) 还是不行,有中文就出错了,,,airhork(张逍) 
    没有错?我这有错,您再帮看看,测试一下
      

  2.   

    airhork(张逍) 
    你输入中文看一看
      

  3.   

    表达式没有错,请看测试页面:(推荐)
    http://www.regexlab.com/zh/workshop.asp?pat=%5E%5B0-9a-zA-Z_%5Cu4e00-%5Cu9fa5%5D%2B%24&txt=%u4E2D%u56FDghyghost123&dlt=0只不过,当写成 java 代码的时候,需要如 fosjos(无聊的菜鸟程序员) 兄所说:
    "^[0-9a-zA-Z_\\u4e00-\\u9fa5]+$"
      

  4.   

    我晕,找到原因了,,,是因为没有在JSP中设置取到参数的中文编码,,,
      

  5.   

    先别接分,,这样写request.setCharacterEncoding("gb2312");还是有乱码,没有转换正确的中文怎么办?感谢
      

  6.   

    http://community.csdn.net/Expert/topic/4952/4952599.xml?temp=.6982233
      

  7.   

    ghyghost(爱国人士-许愿池里的希腊老石头) 
    你用eclipse吗, 我也在找这个设置,编译和输出必须一致
      

  8.   

    我用eclipse的,,,我现在想找一个非常完美的解决乱码的办法,,
    我找到答案了,就是针对每一个变量进行转码,这样非常麻烦,如果上一个JSP页传进来100变量,就得在当前的页面中转换100个变量
    使用过滤器倒是不错的选择,,但是我使用的是虚拟主机,,好像让服务商改tomcat的配置文件不太可能。
    找办法啊?????????????????????????????
      

  9.   

    嗯,那么你用的机器上的location是chinese的吗?还有advance里面的设置是否也选择chinese?
    确定了这两个后,再在eclipse里面找到Properties或用(alt+enter), 有个test file encoding, 把它设置为gb2312,再试试看。