Chinaunix

标题: [正则] js正则表达式[用户名] [打印本页]

作者: futo    时间: 2006-06-12 01:56
标题: [正则] js正则表达式[用户名]
有个判断注册用户名的js正则表达式问题
var patrn = /^(([a-zA-Z0-9]|[_-]){4,20}|[\u4e00-\u9fa5]{2,10})+$/;
由4-20位的大小写英文字母、0-9的数字、下划线“_”、减号“-”或者2-10个汉字组成。

大体上这个可以满足,但回发现如果既有中文,又有字符的话,需要中文满足2个以上,字符4个以上,即(你好ab)是不满足的
而实际应该是满足的,即中文2个就不需要字符一定也要4个的要求了,反过来也一样,

请问该怎么修改

[ 本帖最后由 HonestQiao 于 2006-6-12 08:51 编辑 ]
作者: HonestQiao    时间: 2006-06-12 08:52
先分别匹配出中文和英文,然后再来检查。
作者: futo    时间: 2006-06-12 18:24
怎么个意思?

  1. function validateUsername( str )
  2.                 {               
  3.                         var patrn1 = /^([a-zA-Z0-9]|[_-]){4,20}$/;
  4.                         var patrn2 = /^[\u4e00-\u9fa5]{2,10}$/;
  5.                         if( !patrn1.test( str ) )
  6.                         {       
  7.                                 if ( !patrn2.test( str ) )
  8.                                         return true;
  9.                         }
  10.                 }
复制代码

我这样了还是无法匹配同时有中文和字符的,好象只能要么中文要么字符的,
你帮我设计下把
作者: HonestQiao    时间: 2006-06-12 18:59
你这样子,用了^$,不就表示必须了么?
肯定不行的啊。

说了,先把字符串的中文和非中文给匹配出来,然后对比。
作者: hoojar    时间: 2008-07-23 10:53
function userIsOk(ssn)
{
    var re = /^([a-zA-Z0-9]|[_-]|[@])+$/;
    if (re.test(ssn))
    {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ssn.length < 4 || ssn.length > 20)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;var re = /^(([\u4e00-\u9fa5]|[@]){2,10})+$/;
&nbsp;&nbsp;&nbsp;&nbsp;if (re.test(ssn))
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;var re = /^((([a-zA-Z0-9]|[_-]|[@])|([\u4e00-\u9fa5]|[@])){2,10})+$/;
&nbsp;&nbsp;&nbsp;&nbsp;if (re.test(ssn))
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return false;
}


慧佳生活网 学问库

[ 本帖最后由 hoojar 于 2008-7-23 11:26 编辑 ]
作者: hoojar    时间: 2008-07-23 11:57
//判断用户名是否符合标准

function userIsOk(ssn)
{
&nbsp;&nbsp;&nbsp;&nbsp;var re = /^[a-zA-Z\d_\-@\.]+$/;
&nbsp;&nbsp;&nbsp;&nbsp;if (re.test(ssn))
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ssn.length < 4 || ssn.length > 20)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;var re = /^(([a-zA-Z\d_\-@\.]|[\u4e00-\u9fa5]){2,10})+$/;
&nbsp;&nbsp;&nbsp;&nbsp;if (re.test(ssn))
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return false;
}





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2