YYPOST群发软件 发表于 前天 09:19

AIWROK软件正则用法实际例子

AIWROK软件正则用法实际例子




/*
* AIWROK 正则表达式高级应用系统
* ES5系统安卓 JavaScript引擎Rhino      
* 交流QQ群711841924群一,苹果内测群,528816639
* 案例:用户数据处理与分析综合平台
*/



// 高级数据验证系统
var AdvancedValidationSystem = {
    // 验证规则库 - 包含更复杂的模式匹配
    rules: {
      // 复杂邮箱验证(支持国际化域名)
      email: /^+@(?:+\.)+(?:{2,}|xn--+)$/i,
      
      // 国际手机号验证(支持多种格式)
      internationalPhone: /^\+?\d{1,14}$/,
      
      // 中国大陆手机号验证(更严格的格式)
      cnPhone: /^1\d{9}$/,
      
      // 复杂URL验证(支持IPv4地址和端口号)
      url: /^(https?:\/\/)?(?:www\.)?+(?:\.{2,})+(?:\/[\w\-.~:/?#@![        DISCUZ_CODE_2        ]amp;'\(\)*+,;=]*)?$/i,
      
      // 日期时间验证(支持多种格式)
      datetime: /^\d{4}-(0|1)-(0|\d|3)(?:\s+\d{2}:\d{2}(?::\d{2})?)?$/,
      
      // 身份证号验证(支持15位和18位)
      idCard: /^\d{5}(?:18|19|20)\d{2}(?:0|1)(?:0|\d|3)\d{3}(?:\d|X|x)$/,
      
      // 复杂用户名验证(支持中文、字母、数字、下划线,4-20位)
      username: /^[\u4e00-\u9fa5a-zA-Z0-9_]{4,20}$/,
      
      // 密码强度高级验证
      strongPassword: /^{8,}$/,
      
      // IPv4地址验证
      ipv4: /^((25|2|??)\.){3}(25|2|??)$/,
      
      // 银行卡号验证(Luhn算法前的格式验证)
      bankCard: /^{16,19}$/
    },
   
    // 执行验证
    validate: function(data, field, customRule) {
      var rule = customRule || this.rules;
      if (!rule) {
            throw new Error("Validation rule not found: " + field);
      }
      return rule.test(data);
    },
   
    // 批量验证
    validateBatch: function(data, rules) {
      var results = {};
      for (var field in rules) {
            if (rules.hasOwnProperty(field)) {
                results = this.validate(data, field, rules);
            }
      }
      return results;
    }
};

// 复杂文本内容分析与信息提取系统
var TextAnalysisSystem = {
    // 提取指定类型的信息
    extract: function(text, type) {
      var patterns = {
            emails: /+@(+\.)+({2,}|xn--+)/gi,
            phones: /\+?\d{1,14}/g,
            cnPhones: /1\d{9}/g,
            urls: /(https?:\/\/[\w\-.~:/?#@![        DISCUZ_CODE_2        ]amp;'\(\)*+,;=]+)/g,
            dates: /\d{4}-(0|1)-(0|\d|3)/g,
            versions: /v?\d+\.\d+\.\d+(-\w+)?/g,
            numbers: /-?\d+(\.\d+)?/g,
            ipAddresses: /((25|2|??)\.){3}(25|2|??)/g
      };
      
      var pattern = patterns;
      if (!pattern) {
            throw new Error("Extract type not supported: " + type);
      }
      
      return text.match(pattern) || [];
    },
   
    // 分析文本结构
    analyzeStructure: function(text) {
      var lines = text.split("\n");
      var paragraphs = text.split(/\n\s*\n/);
      
      return {
            totalCharacters: text.length,
            totalWords: text.split(/\s+/).filter(function(word) { return word.length > 0; }).length,
            totalLines: lines.length,
            totalParagraphs: paragraphs.length,
            averageWordsPerLine: Math.round((text.split(/\s+/).length / lines.length) * 100) / 100,
            averageWordsPerParagraph: Math.round((text.split(/\s+/).length / paragraphs.length) * 100) / 100
      };
    },
   
    // 关键词频率统计
    keywordFrequency: function(text, keywords) {
      var frequencies = {};
      var textLower = text.toLowerCase();
      
      keywords.forEach(function(keyword) {
            var pattern = new RegExp(keyword.toLowerCase(), "g");
            frequencies = (textLower.match(pattern) || []).length;
      });
      
      return frequencies;
    }
};

// 数据清洗与标准化系统
var DataCleaningSystem = {
    // 标准化手机号格式
    standardizePhone: function(phone) {
      // 去除所有非数字和加号
      var cleaned = phone.replace(/[^\d+]/g, "");
      
      // 标准化国际手机号格式
      if (cleaned.indexOf("+") === -1 && cleaned.length === 11 && cleaned.charAt(0) === "1") {
            return "+86" + cleaned;
      }
      
      return cleaned;
    },
   
    // 标准化日期格式
    standardizeDate: function(date) {
      // 将各种日期格式转换为YYYY-MM-DD
      var patterns = [
            /^(\d{4})\/(0|1)\/(0|\d|3)$/,// YYYY/MM/DD
            /^(\d{4})-(0|1)-(0|\d|3)$/,// YYYY-MM-DD
            /^(0|\d|3)\/(0|1)\/(\d{4})$/   // DD/MM/YYYY
      ];
      
      for (var i = 0; i < patterns.length; i++) {
            var match = date.match(patterns);
            if (match) {
                if (i === 2) { // DD/MM/YYYY 格式
                  return match + "-" + match + "-" + match;
                }
                return match + "-" + match + "-" + match;
            }
      }
      
      return date; // 返回原始日期,如果无法标准化
    },
   
    // 清除HTML标签
    stripHtml: function(html) {
      return html.replace(/<[^>]+>/g, "");
    },
   
    // 去除多余空格和换行
    normalizeWhitespace: function(text) {
      return text.replace(/\s+/g, " ").trim();
    },
   
    // 提取并标准化关键信息
    extractAndStandardize: function(text) {
      var extracted = {
            emails: this.extractUnique(text, /+@(+\.)+({2,}|xn--+)/gi),
            phones: this.extractUnique(text, /\+?\d{1,14}/g).map(this.standardizePhone),
            urls: this.extractUnique(text, /(https?:\/\/[\w\-.~:/?#@![        DISCUZ_CODE_2        ]amp;'\(\)*+,;=]+)/g),
            dates: this.extractUnique(text, /\d{4}[\/-](0|1)[\/-](0|\d|3)/g).map(this.standardizeDate)
      };
      
      return extracted;
    },
   
    // 提取唯一值
    extractUnique: function(text, pattern) {
      var matches = text.match(pattern) || [];
      var unique = {};
      
      matches.forEach(function(match) {
            unique = match;
      });
      
      return Object.keys(unique).map(function(key) {
            return unique;
      });
    }
};

// 日志分析与监控系统
var LogAnalysisSystem = {
    // 提取指定级别的日志
    extractLogsByLevel: function(logs, level) {
      var pattern = new RegExp("\[[^\]]+\] " + level + ": [^\n]+", "g");
      return logs.match(pattern) || [];
    },
   
    // 解析日志条目
    parseLogEntry: function(logEntry) {
      var pattern = /\[([^\]]+)\]\s*(\w+):\s*([^-]+)-(.*)/;
      var match = logEntry.match(pattern);
      
      if (!match) {
            return null;
      }
      
      var entry = {
            timestamp: match,
            level: match,
            message: match.trim(),
            details: {}
      };
      
      // 解析详细信息
      var details = match.split(", ");
      details.forEach(function(detail) {
            var parts = detail.split(": ");
            if (parts.length === 2) {
                entry.details.trim()] = parts.trim();
            }
      });
      
      return entry;
    },
   
    // 统计日志信息
    analyzeLogs: function(logs) {
      var levels = {
            INFO: (logs.match(/INFO:/g) || []).length,
            ERROR: (logs.match(/ERROR:/g) || []).length,
            WARN: (logs.match(/WARN:/g) || []).length,
            DEBUG: (logs.match(/DEBUG:/g) || []).length
      };
      
      var errorPattern = /ERROR: [^\n]+/g;
      var errors = logs.match(errorPattern) || [];
      
      // 提取所有错误代码
      var errorCodes = [];
      errors.forEach(function(error) {
            var codeMatch = error.match(/code: (\d+)/);
            if (codeMatch) {
                errorCodes.push(codeMatch);
            }
      });
      
      return {
            totalLogs: logs.split("\n").length,
            levels: levels,
            totalErrors: errors.length,
            errorCodes: this.countUnique(errorCodes)
      };
    },
   
    // 统计唯一值
    countUnique: function(arr) {
      var counts = {};
      arr.forEach(function(item) {
            counts = (counts || 0) + 1;
      });
      return counts;
    }
};

// 高级模板引擎与替换系统
var TemplateEngine = {
    // 替换模板变量
    render: function(template, data) {
      return template.replace(/\{\{([^}]+)\}\}/g, function(match, key) {
            return data || match;
      });
    },
   
    // 带过滤器的模板替换
    renderWithFilters: function(template, data, filters) {
      return template.replace(/\{\{([^|}]+)(\|([^}]+))?\}\}/g, function(match, key, filterWithPipe, filterName) {
            var value = data || match;
            
            if (filterName && filters) {
                return filters(value);
            }
            
            return value;
      });
    },
   
    // 正则表达式批量替换
    batchReplace: function(text, replacements) {
      for (var pattern in replacements) {
            if (replacements.hasOwnProperty(pattern)) {
                var regex = new RegExp(pattern, "g");
                text = text.replace(regex, replacements);
            }
      }
      return text;
    }
};

// 高级密码安全系统
var PasswordSecuritySystem = {
    // 检查密码强度
    checkStrength: function(password) {
      var strength = 0;
      var feedback = [];
      
      // 长度检查
      if (password.length >= 12) {
            strength += 25;
      } else if (password.length >= 8) {
            strength += 15;
      } else {
            feedback.push("密码长度至少8位");
      }
      
      // 包含小写字母
      if (//.test(password)) {
            strength += 20;
      } else {
            feedback.push("包含小写字母");
      }
      
      // 包含大写字母
      if (//.test(password)) {
            strength += 20;
      } else {
            feedback.push("包含大写字母");
      }
      
      // 包含数字
      if (/\d/.test(password)) {
            strength += 15;
      } else {
            feedback.push("包含数字");
      }
      
      // 包含特殊字符
      if (/[^a-zA-Z0-9]/.test(password)) {
            strength += 20;
      } else {
            feedback.push("包含特殊字符");
      }
      
      // 检查常见密码
      var commonPasswords = ["password", "123456", "qwerty", "admin", "12345678"];
      if (commonPasswords.indexOf(password.toLowerCase()) !== -1) {
            strength = 0;
            feedback.unshift("避免使用常见密码");
      }
      
      // 检查连续字符
      if (/\d{3,}|{3,}/.test(password)) {
            strength -= 10;
            feedback.push("避免连续字符");
      }
      
      return {
            strength: Math.max(0, strength),
            feedback: feedback,
            level: strength >= 80 ? "极强" : strength >= 60 ? "强" : strength >= 40 ? "中" : "弱"
      };
    },
   
    // 生成密码强度建议
    generateSuggestions: function() {
      return [
            "使用12位以上的密码",
            "组合使用大小写字母",
            "包含数字和特殊字符",
            "避免使用常见单词",
            "定期更换密码",
            "不要在多个网站使用相同密码"
      ];
    }
};

// 正则表达式性能分析与优化系统
var RegexPerformanceSystem = {
    // 性能基准测试
    benchmark: function(pattern, text, iterations) {
      iterations = iterations || 1000;
      var regex = new RegExp(pattern, "g");
      var startTime = new Date().getTime();
      
      for (var i = 0; i < iterations; i++) {
            text.match(regex);
      }
      
      var endTime = new Date().getTime();
      return {
            pattern: pattern,
            iterations: iterations,
            time: endTime - startTime,
            averageTime: (endTime - startTime) / iterations + "ms/次"
      };
    },
   
    // 比较不同正则表达式的性能
    comparePatterns: function(patterns, text, iterations) {
      var results = [];
      
      for (var i = 0; i < patterns.length; i++) {
            results.push(this.benchmark(patterns, text, iterations));
      }
      
      // 按性能排序
      results.sort(function(a, b) {
            return a.time - b.time;
      });
      
      return results;
    },
   
    // 优化正则表达式建议
    getOptimizationTips: function() {
      return [
            "使用精确的字符类代替通配符",
            "使用非捕获组(?:...)代替捕获组(...),当不需要提取数据时",
            "使用^和$锚点限制匹配范围",
            "避免过度使用回溯,如嵌套量词",
            "使用预编译正则表达式提高性能",
            "对于频繁使用的模式,考虑使用字符串方法代替正则表达式"
      ];
    }
};

// 综合应用示例
function runComprehensiveExample() {
    printl("AIWROK 正则表达式高级应用系统", "");
   
    // 1. 高级数据验证示例
    printl("1. 高级数据验证示例", "");
    var userData = {
      email: "user@example.com.cn",
      cnPhone: "13812345678",
      url: "https://www.aiwrok.com",
      datetime: "1990-01-15",
      idCard: "110101199001151234"
    };
   
    for (var key in userData) {
      if (userData.hasOwnProperty(key)) {
            var isValid = AdvancedValidationSystem.validate(userData, key);
            printl(key, userData + " => " + (isValid ? "有效" : "无效"));
      }
    }
   
    // 2. 文本内容分析示例
    printl("2. 文本内容分析示例", "");
    var sampleText = "AIWROK发布于2024年1月15日,官方网站是https://www.aiwrok.com。\n" +
                  "联系邮箱:support@aiwrok.com,客服电话:400-888-8888。\n" +
                  "用户可以通过手机号13812345678或邮箱user@example.com注册。\n" +
                  "支持的功能包括:自动点击、文本识别、图像处理等。\n" +
                  "版本历史:v1.0.0(2024-01-15), v1.1.0(2024-03-20), v2.0.0(2024-06-10)";
   
    var extractedEmails = TextAnalysisSystem.extract(sampleText, "emails");
    var extractedPhones = TextAnalysisSystem.extract(sampleText, "cnPhones");
    var extractedUrls = TextAnalysisSystem.extract(sampleText, "urls");
   
    printl("提取到的邮箱", extractedEmails);
    printl("提取到的手机号", extractedPhones);
    printl("提取到的网址", extractedUrls);
   
    // 3. 数据清洗与标准化示例
    printl("3. 数据清洗与标准化示例", "");
    var messyData = "联系信息:13812345678   (手机) ,邮箱:USER@EXAMPLE.COM   \n" +
                  "注册日期:2024/01/15 ,网站:HTTPS://WWW.AIWROK.COM/path\n" +
                  "IP地址:192.168.1.1,另一个邮箱:admin@aiwrok.com";
   
    var cleanedData = DataCleaningSystem.extractAndStandardize(messyData);
    printl("清洗后的邮箱", cleanedData.emails);
    printl("清洗后的手机号", cleanedData.phones);
    printl("清洗后的日期", cleanedData.dates);
   
    // 4. 日志分析示例
    printl("4. 日志分析示例", "");
    var sampleLogs = " INFO: 用户登录成功 - userId: 12345 ERROR: 数据库连接失败 - code: 500, message: connection timeout WARN: 磁盘空间不足 - used: 85%, threshold: 80% INFO: 文件上传完成 - filename: report.pdf, size: 2.5MB ERROR: API请求失败 - url: /api/user, code: 404, message: not found";
    var errorLogs = LogAnalysisSystem.extractLogsByLevel(sampleLogs, "ERROR");
    var logStats = LogAnalysisSystem.analyzeLogs(sampleLogs);
    printl("ERROR日志数量", errorLogs.length);
    printl("日志级别统计", logStats.levels);
   
    // 5. 模板引擎示例
    printl("5. 模板引擎示例", "");
    var template = "尊敬的{{username}},您的订单#{{orderId}}已发货。\n" +
                   "预计送达时间:{{deliveryDate}},物流单号:{{trackingNumber}}。\n" +
                   "金额:{{amount|currency}}元";
   
    var orderData = {
      username: "张三",
      orderId: "ORD20240115001",
      deliveryDate: "2024-01-20",
      trackingNumber: "SF1234567890",
      amount: 299.99
    };
   
    var filters = {
      currency: function(value) {
            return parseFloat(value).toFixed(2);
      }
    };
   
    var rendered = TemplateEngine.renderWithFilters(template, orderData, filters);
    printl("渲染后的模板", rendered);
   
    // 6. 密码强度检查示例
    printl("6. 密码强度检查示例", "");
    var testPasswords = ["123456", "password", "Password123", "P@ssw0rd!2024", "C0mpl3xP@ssw0rd2024"];
   
    testPasswords.forEach(function(pwd) {
      var result = PasswordSecuritySystem.checkStrength(pwd);
      printl("密码 '" + pwd + "'", "强度:" + result.strength + "% (" + result.level + ")");
    });
   
    printl("AIWROK 正则表达式高级应用系统完成", "");
}

// 执行综合示例
runComprehensiveExample();

页: [1]
查看完整版本: AIWROK软件正则用法实际例子