Browse Source

修改密码 调整

LAPTOP-FO2T5SIU\35838 2 months ago
parent
commit
1fbb301974
1 changed files with 15 additions and 1 deletions
  1. 15 1
      src/static/utils/validate.js

+ 15 - 1
src/static/utils/validate.js

@@ -129,6 +129,8 @@ export function isPassword(rule, value, callback) {
         callback(new Error('密码需由至少8位大小写字母、数字及符号组成'))
     } else if (checkPasswordContain(value)) {
         callback(new Error('密码不可包含常用复数数字或指定简易密码'))
+    } else if (hasYearInRange(value)) {
+        callback(new Error('密码不可包含1900-2025区间的年份数字'))
     } else {
         callback()
     }
@@ -136,7 +138,7 @@ export function isPassword(rule, value, callback) {
 
 function checkPasswordContain(value) {
     const blackList = ['123456', '654321', '123456!', '654321!', 'Xiaoai@2024', 'idea@',
-        '000', '111', '222', '333', '444', '555', '666', '777', '888', '999']
+        '000', '111', '222', '333', '444', '555', '666', '777', '888', '999', '123', '456', '789']
 
     for (let i = 0; i < blackList.length; i++) {
         if (value.indexOf(blackList[i]) > -1) return true
@@ -145,6 +147,18 @@ function checkPasswordContain(value) {
     return false
 }
 
+/**
+ * 修复版:检测字符串中是否包含1900-2025区间的数字(无论前后是否有其他字符)
+ * @param {string} inputStr - 需要检测的字符串
+ * @returns {boolean} 包含则返回true,否则返回false
+ */
+function hasYearInRange(inputStr) {
+    // 移除边界匹配,确保即使年份前后有其他字符也能被检测到
+    // 正则含义:1900-1999 或 2000-2019 或 2020-2025
+    const yearRegex = /(19\d{2}|20[0-1]\d|202[0-5])/
+    return yearRegex.test(inputStr)
+}
+
 /* 自动检验数值的范围*/
 export function checkMax20000(rule, value, callback) {
     if (value === '' || value === undefined || value === null) {