我在js中用下面代码判断成功:
var exp = /^[\u4e00-\u9fa5]{2,9}$/;
if(exp.exec(s)){
   alert("yes");
}但在java中用下面代码就判断不了,我觉得是编码问题,但想不到解决办法,请高人指点一下
if(s.matches("^[\u4e00-\u9fa5]{2,9}$")){
   System.out.println("yes");
}

解决方案 »

  1.   

    应该是编码的问题,平台默认是gbk( 0x8140 - 0xFEFE)的话就不是你说的那个范围了。你的那个范围是unicode的汉字范围。
      

  2.   

    不大清楚  记得是: [\u4e00-\u9fa5]
      

  3.   

    没问题啊,你遇到什么问题了?
    matches是完全匹配,就算你的字符串里有任何一个非中文的,都会是false;

      

  4.   


    我试了你说的0x8140 - 0xFEFE,还是不可以。
    我页面的确定义的是gbk的,但我在js中怎么能用\u4e00-\u9fa5来判断呢。
      

  5.   


    我现在在页面中输入中文,也返回的是false
      

  6.   

    java语言就是用的unicode统一码