日期:2014-05-16  浏览次数:20699 次

关于昵称的正则表达式的编写请求帮助
这是另外一个朋友教我的,可能有问题,
要求:如下
昵称:长度最多为5个汉字或10个字母\数字。
并且是混合组合,也就是如:"9sdf你好"也是正确的昵称,
分不多,给80分

$("#usernick").blur(function(){
    $(this).css("background-color","#fff");
//var re = /([^\u4E00-\u9FA5\uf900-\ufa2d\w]|[_])/g;
var re =/[a-zA-Z0-9]{1,10}|[\x4e00-\x9fa5]{1,5}/g;
if ($.trim($("#usernick").val()).length>0){
    var limit = $.trim($("#usernick").val()).replace(/([^\x00-\xff])/g,'aa').length;
if (!re.test($.trim($("#usernick").val()))) {
if (limit>10){
$("#nick_msg").html("<div class=pic></div><font color='#FFFFFF'>昵称格式不正确!</font>").show();
}
}else
{
  $("#nick_msg").html("<font color='#FFFFFF'>昵称格式正确!</font>").show();
}
}else
{
  $("#nick_msg").html("<div class=pic></div><font color='#FFFFFF'>昵称不能为空!</font>").show();
}
});
php? 正则表达式

------解决方案--------------------
赋值你的代码,没注意你没按照#4修改判断提交,是
------解决方案--------------------
不是&&,用下面的更新你的checkname函数

    function checkname(v) {
        var rx = /[a-z\d]/i, rxcn = /[\u4e00-\u9fa5]/, num = 0, chr;
        for (var i = 0, j = v.length; i < j; i++) {
            chr = v.charAt(i);/////////
            if (rx.test(chr)) num += 1;
            else if (rxcn.test(chr)) num += 2;
            else return false;
        }
        if (num < 1 
------解决方案--------------------
 num > 10) return false;/////////
        return true;
    }