You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript正则校验密码时触发JSLint不安全异常求助

解决JSLint "Insecure '.'" 报错并保持密码正则校验功能

JSLint抛出的"Insecure '.'"错误,是因为它认为正则表达式中的.*存在安全风险——.*会匹配任意非换行字符,JSLint担心这种宽泛的匹配可能导致意外的匹配结果。你之前错误地将.*改成\.*,这会让正则匹配0个或多个点号,完全偏离了原有的"匹配任意字符"逻辑,自然无法正常校验密码。

正确的修改方案

把每个前瞻断言里的.*替换为[\s\S]*,[\s\S]表示匹配所有空白和非空白字符(即任意字符,包括换行),既符合JSLint的安全要求,又能完全保留原正则的校验规则:

修改后的正则表达式:

var passw = /^(?=[\s\S]*[A-Z])(?=[\s\S]*[a-z])(?=[\s\S]*[0-9])(?=[\s\S]*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;

完整修改后的代码片段

passwordPatternCheck : function passwordPatternCheck() {
  var patternCheck = function passPatternCheck(submittedValues, validation) {
    var result = null;
    var submitted = submittedValues[validation.name];
    // 替换.*为[\s\S]*以通过JSLint校验
    var passw = /^(?=[\s\S]*[A-Z])(?=[\s\S]*[a-z])(?=[\s\S]*[0-9])(?=[\s\S]*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
    if (submitted && !submitted.match(passw)) {
      var displayName = validation.label || validation.name;
      result = i18n("Should have 8 or more characters with atleast one uppercase, one lowercase, one number and one special character as %s.", displayName);
    }
    return result;
  };
  return patternCheck;
},

验证功能

修改后的正则依然严格执行原密码规则:

  • 长度至少8位
  • 包含至少一个大写字母
  • 包含至少一个小写字母
  • 包含至少一个数字
  • 包含至少一个指定特殊字符(@$!%*?&)

内容的提问来源于stack exchange,提问作者arv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:36:04