^[ \d]?[^\x00-\xff](?:[ \d]|[^\x00-\xff])*$

解决方案 »

  1.   

    /^[ \d]*[^\x00-\xff](?:[ \d]|[^\x00-\xff])*$/
      

  2.   

    var re=/^[\u4e00-\u9fa5a-z\d ]+(?:[\u4e00-\u9fa5a-z])$/i;
      

  3.   

    都没有达到要求
    用[^\x00-\xff]来匹配汉字会不会匹配到非法字符?
    给几个字符串用来测试
    "  " 不匹配
    "12 3" 不匹配
    "a 3 a" 不匹配
    "A" 匹配
    "f3d fdf" 匹配
    "啊3 啊" 匹配
      

  4.   

    var p = /^[ \dA-Za-z]*(?:[^\x00-\xff]|[A-Za-z])(?:[ \dA-Za-z]|[^\x00-\xff])*$/
    alert(p.test("  "));
    alert(p.test("12 3"));
    alert(p.test("a 3 a"));
    alert(p.test("A"));
    alert(p.test("f3d fdf"));
    alert(p.test("啊3 啊"));
    这个和你匹配汉字字母数字和空格,但不能都是空格和数字
    这个是相符的。
      

  5.   

    <script>
      //var str="    ";
      //var str="12 3";
      // var str="a 3 a";
      //var str="f3d fdf"
      var str="啊3 啊"
      var re1 = /^[\u4e00-\u9fa5a-z\d ]*(?:[\u4e00-\u9fa5a-z]+)$/i;
      var re=/\s+\d+\s+/;
      if (re1.test(str)&&!re.test(str))
      {
      alert ("ok");
      }
      else 
      alert("no");
      
      </script>
      

  6.   

    昂。。给你个长的。。
    <script type="text/javascript">
    var p = /^(?:(?:[ ]|^)(?:[\u4e00-\u9fa5aA-Za-z]+|(?:[\u4e00-\u9fa5aA-Za-z]+\d+[\u4e00-\u9fa5aA-Za-z]*|[\u4e00-\u9fa5aA-Za-z]*\d+[\u4e00-\u9fa5aA-Za-z]+)+))+$/;
    //alert(p.test("你"));
    alert(p.test("  "));
    alert(p.test("12 3"));
    alert(p.test("a 3 a"));
    alert(p.test("A"));
    alert(p.test("f3d fdf"));
    alert(p.test("啊3 啊"));
    </script>
      

  7.   

    jinjuduo()
    你分成两个了,这样表达式似乎更简单些,不过你把大写字母给落掉了muxrwc(生命曾可贵,信念价更高,学习要努力,追猫永不弃。) 
    这个可以,表达式还真是长,看的我眼花,不过有个小问题,末尾的空格不匹配,字符被两个以上空格分开也不匹配
      

  8.   

    晕,用两个吧。。
    var p = /^(?:(?:[ ]|^)(?:[\u4e00-\u9fa5aA-Za-z]+|(?:[\u4e00-\u9fa5aA-Za-z]+\d+[\u4e00-\u9fa5aA-Za-z]*|[\u4e00-\u9fa5aA-Za-z]*\d+[\u4e00-\u9fa5aA-Za-z]+)+))+[ ]*$/;
    末尾有空格不匹配加个判断就好了。
      

  9.   

    嗯,看来还是分成两个的好,看着也清楚
    不过jinjuduo() "a1"这个怎么不匹配啊
      

  10.   

    <script>
       var str="a1"
      var re1 = /[\u4e00-\u9fa5a-z\d ]*(?:[\u4e00-\u9fa5a-z]+)/i;
      var re=/\s+\d+\s+/;
      if (re1.test(str)&&!re.test(str))
      {
      alert ("ok");
      }
      else 
      alert("no");
      
      </script>
      

  11.   

    var str="a1 1 ";
    var re1 = /^[\w ]*$/i;
    var re=/(\s|^)\d(\s|$)/;
    if (re1.test(str)&&!re.test(str))
    alert ("ok");
    else
    alert("no");
      

  12.   

    字符被两个以上空格分开也不匹配
    如果用两个的话只需要加个判断就可以了。。
    <script type="text/javascript">
    function check(str) {
    return /^(?:(?:[ ]|^)(?:[\u4e00-\u9fa5aA-Za-z]+|(?:[\u4e00-\u9fa5aA-Za-z]+\d+[\u4e00-\u9fa5aA-Za-z]*|[\u4e00-\u9fa5aA-Za-z]*\d+[\u4e00-\u9fa5aA-Za-z]+)+))+[ ]*$/.test(str) || str.match(/[ ]+/g).length > 2;
    }
    alert(check("1 2 2 "))</script>
      

  13.   

    gzdiablo() 
    最后那个是错的,前面一些不允许匹配的都被匹配上了muxrwc(生命曾可贵,信念价更高,学习要努力,追猫永不弃。) 
    这个比较强,不过是不是太长了?我先用这个吧