貌似一条搞不定,先
/^[a-zA-Z0-9]{1}[a-zA-Z0-9\.\-\_]{2,8}[a-zA-Z0-9]{1}$/gi
然后再检查是否特殊符号有重复

解决方案 »

  1.   

    <script language="javascript">
    function isValid(str)
    {
      var s=new String(str)
      var t=/^[a-zA-Z0-9]{1,}(([\.]?[a-zA-Z0-9]*?[\-]?[a-zA-Z0-9]*?[\_]?)|([\.]?[a-zA-Z0-9]*?[\_]?[a-zA-Z0-9]*?[\-]?)|([\-]?[a-zA-Z0-9]*?[\.]?[a-zA-Z0-9]*?[\_]?)|([\-]?[a-zA-Z0-9]*?[\_]?[a-zA-Z0-9]*?[\.]?)|([\_]?[a-zA-Z0-9]*?[\.]?[a-zA-Z0-9]*?[\-]?)|([\_]?[a-zA-Z0-9]*?[\-]?[a-zA-Z0-9]*?[\.]?))[a-zA-Z0-9]{1,}$/gi
      if(t.test(s))
      {
         if(s.length>=4 && s.length<=10)
             return true;
      }
      return false;
    }var d="northsnow.csdn"
    alert(isValid(d))
    var d="north.snow"
    alert(isValid(d))
    </script>
      

  2.   

    我想把三个特殊字符分开,做成三个正则再并起来,即第一个正则验证有没有-,且是不是唯一的,第二个验证有没有_,是不是唯一的,第三个验证有没有.是不是唯一的,我就是不知道怎么并起来.
    ^第一个&&第二个&&第三个$,不知道这样成不成,因为单个的要好判断一些.
    第一个:^[a-z0-9]+\w?[a-z0-9]+$(还没加入长度的限制)
      

  3.   

    我的那个正则就是用 并 起来的方式 来匹配 不同的方向。
    但是不能验证长度。
    最后用
    变量的 length属性单独验证长度。
      

  4.   

    那只有采取
    rob123(萝卜[http://luobo.xiguat.com]) 
    方法。
    不过如果特殊字符太多的话,查找重复字符的工作也是很麻烦的。
      

  5.   

    有高手帮我写下吗?非常感谢precipitant(塞北的雪) 的方法,就是不知道有没有更好的方法.
      

  6.   

    即然这样不如先验证10位以内,及开头字符.后验证是否重复验证10位以内,及开头字符
    /^[0-9|a-Z][0-9|a-Z|\.|-|_]{3,9}$/验证是否重复/([\.|-|_]).*/1/g
      

  7.   

    function f(s)
    {
    var r1=/^[0-9|a-z]([0-9|a-z|\.|\-|_]){3,9}$/;
    var r2=/([\.|\-|_]).*\1/g; 
    alert((!r2.test(s))&&r1.test(s)); 
    }
      

  8.   

    忘了以字母或数字结尾,这下应该是正确的了!
    function f(s)
    {
    var r1=/^[0-9|a-z]([0-9|a-z|\.|\-|_]){2,8}[0-9|a-z]$/;
    var r2=/([\.|\-|_]).*\1/g; 
    alert((!r2.test(s))&&r1.test(s)); 
    }
      

  9.   

    今天学了正则的向前向后查看,给你再写一个一句的:
    function f(s)
    {
    var r=/^(?!.*([\.\-_]).*\1)[0-9|a-z][0-9|a-z|\.|\-|_]{2,8}[0-9|a-z]$/;
    alert((r.test(s))); 
    }