var re=/^[^\s]{1}[\w]{0,24}$/g;
str="";
str1=" ";
str2="a";
str3="abcdefgabcdefgabcdefgabcdefgg";
document.write(re.test(str))
document.write("<br>")
document.write(re.test(str1))
document.write("<br>")
document.write(re.test(str2))
document.write("<br>")
document.write(re.test(str3))

解决方案 »

  1.   

    chinmo 的存在一个问题, 如果 str2=" a" 就不行了, 并没说不能有空格
      

  2.   

    /[^\s]/.test(str) && str.length<=25这样不行吗?
      

  3.   

    想了一下,用正则不太好做.就不能换一种思路.晕str="";
    str1=" ";
    str2=" a";
    str3="abcdefgabcdefgabcdefgabcdefgg";
    document.write(isValidStr(str))
    document.write("<br>")
    document.write(isValidStr(str1))
    document.write("<br>")
    document.write(isValidStr(str2))
    document.write("<br>")
    document.write(isValidStr(str3))function isValidStr(str)
    {
    if(typeof str == "string" && str.length)
    {
    if(str.length > 25)
    return false;

    return str.trim().length > 0 ? true : false;
    }
    else
    {
    return false;
    }
    }
      

  4.   

    function test(a){
    return /^.{1,25}$/.test(a)&&/^.+\S.+$/.test(a);
    }
    保证好用
      

  5.   

    一个正则不容易判断,结合一下length就很好判断了
    <script type="text/javascript" language="javascript">
    //至少有一个非空白字符, 总长不超过 25 的正则表达式 
    var re=/\S/;
    var s = "  A ";
    if(re.test(s) && s.length<=25)
    {
    alert(true);
    }else
    {
    alert(false);
    }
    </script>
      

  6.   

    试了一下<script type="text/javascript" language="javascript">
    var re=/^(?![^\s]*$).{1,25}$/
    alert(re.test("                "));//true
    </script>
      

  7.   

    刚开始没考虑好,一个正则实现的代码如下
    var re=/^[\s]{0,}$|^[\w\s]{26,}$/g;
    str="";
    str1=" ";
    str2="a";
    str3="abcdefgabcdefgabcdefgabcdefgg";
    str4=" a";
    document.write(!re.test(str))
    document.write("<br>")
    document.write(!re.test(str1))
    document.write("<br>")
    document.write(!re.test(str2))
    document.write("<br>")
    document.write(!re.test(str3))
    document.write("<br>")
    document.write(!re.test(str4))
    一个正则实现的
      

  8.   

    其实发这个帖子的目的有学习的成分, 目前看以上各位的都不能一个表达式搞定
    也许这是体现正则表达式局限性的一个例子? (比如不能 and)
      

  9.   

    str=" a "; 
    re.test(str)返回false看样一个正则很难搞定....
      

  10.   

    str=" a "; 
    re.test(str)返回false 
    这个返回false是正确的一点都没错的你自己看我的正则是取的什么?re=/^[\s]{0,}$|^[\w\s]{26,}$/g; 
    这个正则是匹配全部是空字符或者大于25的字符串str=" a "; 这个当然不属于我正则匹配的那么你取反
    !re.test(str)不就是LZ需要的了?
      

  11.   

    LS的逆向思维很强,不过脾气很冲啊);
    <script language="javascript">
    var re=/^[\s]{0,}$|^[\w\s]{26,}$/g;
    var str="";
    alert(!re.test(str));//false
    str=" ";
    alert(!re.test(str));//true 这里为true?
    </script>
      

  12.   

    不过我也奇怪,写到函数里就ok
    <script language="javascript">
    alert(regTest(""));
    alert(regTest(" "));
    alert(regTest("abcd"));
    function regTest(str)
    {
      var re=/^[\s]{0,}$|^[\w\s]{26,}$/g;
      return !re.test(str);


    </script>
      

  13.   

    //要加!就可以用以下:
    var re=/.{26}|^\s*$/g;
    str="    ";
    alert(!re.test(str));
      

  14.   


    <script language="javascript">
    var re=/^[\s]{0,}$|^[\w\s]{26,}$/g;
    var str="";
    alert(!re.test(str));//false
    str=" ";
    alert(!re.test(str));//true 这里为true?
    </script>去掉g参数就可以了,不知道为什么
      

  15.   

    //不加!的var re=/^(?!.{26}|^\s*$)/g;
    str=" a ";
    alert(re.test(str));
      

  16.   

    对,各位的发言都导向真理的所在,感谢ing
      

  17.   

    var re=/^(?![\w\s]{26}|^\s{0,}$)/g;
    str="";
    str1=" ";
    str2="a";
    str3="abcdefgabcdefgabcdefgabcdefgg";
    str4=" a";
    document.write(re.test(str))
    document.write("<br>")
    document.write(re.test(str1))
    document.write("<br>")
    document.write(re.test(str2))
    document.write("<br>")
    document.write(re.test(str3))
    document.write("<br>")
    document.write(re.test(str4))在我的基础上用预查是一样的其实就是要学会一个变通,逆向思维顺着不行,我们就逆着去想,会有意想不到的收获的