Discuz!小编 发表于 2026-8-17 15:02:26

怎么设置用户注册时禁止纯数字注册呢? New












我知道答案 回答被采纳将会获得1 贡献 已有1人回答

瑾瑜 发表于 2026-8-17 15:03:09

修改文件:\static\js\register.js

在 checkusername 函数中,可以通过添加正则表达式判断来排斥纯数字用户名。以下是修改建议:

修改方法

在 checkusername 函数中,在现有的 username.match(/<|>|"|\(|\)|'/ig) 判断之后,添加对纯数字的检查:

function checkusername(id) {      errormessage(id);      var username = trim($(id).value);      if($('tip_' + id).parentNode.className.match(/ p_right/) && (username == '' || username == lastusername)) {                return;      } else {                lastusername = username;      }      if(username.match(/<|>|"|\(|\)|'/ig)) {                errormessage(id, $L('username_illegal'));                return;      }      // 添加:检查是否为纯数字用户名      if(/^\d+$/.test(username)) {                errormessage(id, $L('username_numeric_not_allowed') || '用户名不能为纯数字');                return;      }      var unlen = username.replace(/[^\x00-\xff]/g, "**").length;      if(unlen < 3 || unlen > 15) {                errormessage(id, unlen < 3 ? $L('username_min_length', ) : $L('username_max_length', ));                return;      }      var x = new Ajax();      $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, '');      x.get('forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkusername&username=' + (username.replace(/%/g, '%25').replace(/#/g, '%23')), function(s) {                errormessage(id, s);      });}

关键点说明

修改内容说明/^\d+$/.test(username)正则表达式检查字符串是否全部由数字组成(^ 开头,\d+ 一个或多个数字,$ 结尾)$L('username_numeric_not_allowed')建议在语言包中添加对应的提示文本,或直接使用硬编码的提示信息

可选:更严格的限制(如果只允许字母开头)

如果希望用户名必须以字母开头,且不能为纯数字,可以使用:

// 必须以字母开头,且不能为纯数字if(/^\d+$/.test(username) || !/^/.test(username)) {      errormessage(id, $L('username_invalid') || '用户名必须以字母开头且不能为纯数字');      return;}

语言包配置(可选)

在语言包中添加对应的提示信息:

// 在语言包中添加$L('username_numeric_not_allowed', '用户名不能为纯数字');
页: [1]
查看完整版本: 怎么设置用户注册时禁止纯数字注册呢? New