try
------------------------------------------------
<script language="javascript">
alert(isValidUser("1a-f.asf.d"));function isValidUser(str){
return /^[\w]{1}[\w.\-_]{2,17}$/.test(str);
}
</script>正则表达式^[\w]{1}[\w.\-_]{2,17}$
^代表字符串开始\w匹配a-zA-Z0-9,{1}表示字符串的开头必须是字母或数字
后边跟前边一样,1个再加上2到17个就是3-18个长度了

解决方案 »

  1.   

    <script language="javascript">
    function ChackName()
    {
       var str=form1.txtname.value;
       var letter=^[\w]{1}[\w.\-_]{2,17}$;
       if(str.length==0)
       {
          alert("用户名不能为空!");
      return false;
      
       }
       if(str!=letter)
       {
     alert("123");
     return false;
       }   return true;
    }
    </script>
    可以这样做吗?
      

  2.   

    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <script language="javascript">
    function ChackName()
    {
      var debug="";
       var str=document.getElementById("txtname").value;
       if(str==""){
      debug="用户名不能为空!";
      
       }
       else{
    if(/^[\w]{1}[\w.\-_]{2,17}$/.test(str)){
    debug="用户名合法";
    }
    else{
    debug="用户名不合法";
    }
       }
       alert(debug);
     }
    </script></HEAD><BODY>
    <input type="text" id="txtname" onblur="ChackName()">
    </BODY>
    </HTML>
      

  3.   

    <script language="javascript">
    functiong check(){ 
    var name=document.input.value
    if (name.length == 0)
     {
     alert("请输入名称");
     return false;
     } 
    var rs=name.macth(/^([0-9a-zA-Z]{1}[0-9a-zA-Z_.]{1,16}0-9a-zA-Z]{1} )&/);
    if (rs == null )
    {
     alert("输入的名称有错误 ");
     name.fouce();
    return false;
    }
    return true;
    }
    </script>