验证用户名是否合法:
JS中的正则表达式函数哪个可以实现检验用户名是否符合一个正则表达?
我的用户名要求4-18个字符或2-9个汉字,我用C#写的正则表达式是:^([a-zA-Z][a-zA-Z0-9_\.]{2,16}[a-zA-Z0-9])|([\u4E00-\u9FA5]{2,9})$我想用JS的正则表达式函数检验这个用户名是否符合上面的正则表示式,但不知道哪个JS函数可以实现.最好这个函数可以返回true或者false.这样我就可以在客户端实现检验了.
谢谢高手的指教,很急!!!

解决方案 »

  1.   

    上面写错了,应该是:^([a-zA-Z][a-zA-Z0-9_\.]{4,18}[a-zA-Z0-9])|([\u4E00-\u9FA5]{2,9})$
      

  2.   

    s ="xxxx";
    if(s.match(/^([a-zA-Z][a-zA-Z0-9_\.]{2,16}[a-zA-Z0-9])|([\u4E00-\u9FA5]{2,9})$/)==null) alert("error");
    else alert("ok");
      

  3.   

    s ="xxxx";
    if(s.match(/^([a-zA-Z][a-zA-Z0-9_\.]{4,18}[a-zA-Z0-9])|([\u4E00-\u9FA5]{2,9})$/ig)==null) alert("error");
    else alert("ok");
      

  4.   

    高手,我手头东西太多了, JS正则表达式了解只是皮毛,match这个函数经常见,只是不会用
      

  5.   

    如何不正确?方法是可以的,正则表达式不对吗?
    if(s.match(/^([a-zA-Z0-9]{4,18})|([\u4E00-\u9FA5]{2,9})$/ig)==null) alert("error");
    else alert("ok");
      

  6.   

    最初发的没有错,正则表达式应该就是这个^([a-zA-Z][a-zA-Z0-9_\.]{2,16}[a-zA-Z0-9])|([\u4E00-\u9FA5]{2,9})$不管是哪个,错误都会出现, 错误如下:能满组最低下限,比如我输4个字符以下或者2个汉字以下,都会提示错误(满足了我的下限要求),但是可以任意输入任意多个字符和汉字,也就是没有上限,错误就在这里,不能满足我的最大18个字符或9个汉字的要求.再次请教,谢谢!!!
      

  7.   

    <script language=javascript>
    s ="xxxs1111111111111";
    if(s.match(/^(([a-z0-9\_]{4,18})|([\u4E00-\u9FA5]{2,9}))$/ig)) alert("ok");
    else alert("error");
    </script>
      

  8.   

    var reg = /(^\w{4,18}\s*$)|(^[\u4E00-\u9FA5]{2,9}\s*$)/;
      if(!reg.test(s))
        alert('error');不知道你对字符有什么要求,这里就给你设成a-zA-Z0-9了
    s为被验证的用户名
      

  9.   

    qf521lx() ( ) 信誉:100    Blog   加为好友  2007-07-10 00:00:40  得分: 0  
     
     
       var reg = /(^\w{4,18}\s*$)|(^[\u4E00-\u9FA5]{2,9}\s*$)/;
      if(!reg.test(s))
        alert('error');不知道你对字符有什么要求,这里就给你设成a-zA-Z0-9了
    s为被验证的用户名
      
    ---------------------------------用正则表达式.test(string)方法就可以,但是提醒LZ,用户名一般都不能以数字开头的,不知道你的用户名是否有特殊需求,允许以数字开头。
      

  10.   

    lz是不区分大小写的,汉字单独使用
    这样在规则判断前最好先处理下,把用户名全部大写或者小写转换下。我定小写转换后规则式为:
    ^([a-z][a-z0-9_\.]{2,16}[a-z0-9])|([\u4E00-\u9FA5]{2,9})$
      

  11.   

    <script language=javascript>
    s ="xxxs11111111111111111111111111111111111111111";
    if(s.match(/^(([a-z][a-z0-9\.\_]{2,16}[a-z0-9])|([\u4E00-\u9FA5]{2,9}))$/i)) alert("ok");
    else alert("error");
    </script>
      

  12.   

    我似乎觉得match函数和test函数都仅仅是模式匹配,比如我要求的条件是:用户名由字母a~z(不区分大小写)、数字0~9、点、下划线或汉字组成,只能以字母或汉字开头,汉字仅单独使用,只能以字母、数字或汉字结尾字符要求4-18个或者汉字要求2-9个。
    上面这个条件的意思是说:当你在输入用户名的时候只能输入和这个条件有关系的字符,当我输入和这个条件不符合的字符的时候,提示不能输入。所以我的要求是想用JS中的某个函数来检测这个用户名是否符合这个上面的条件,从而用程序的办法控制不能输入,当输入不符合要求字符的时候可以提示给用户。
    谢谢指教,希望大家帮我解决
      

  13.   

    var oRegex = new RegExp('^([a-zA-Z][a-zA-Z0-9_\.]{4,18}[a-zA-Z0-9])|([\u4E00-\u9FA5]{2,9})$',"i") ;
    var valuem="scads";
    if(oRegex.exec(valuem))
    {
      alert("true!");
    }
    else
    {
            alert("false");
    }