B2B网络软件
标题:
AIWROK软件正则用法实际例子
[打印本页]
作者:
YYPOST群发软件
时间:
前天 09:19
标题:
AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
1.png
(854.74 KB, 下载次数: 1)
下载附件
前天 09:19
上传
2.png
(958.13 KB, 下载次数: 1)
下载附件
前天 09:19
上传
/*
* AIWROK 正则表达式高级应用系统
* ES5系统安卓 JavaScript引擎Rhino
* 交流QQ群711841924群一,苹果内测群,528816639
* 案例:用户数据处理与分析综合平台
*/
// 高级数据验证系统
var AdvancedValidationSystem = {
// 验证规则库 - 包含更复杂的模式匹配
rules: {
// 复杂邮箱验证(支持国际化域名)
email: /^[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\.)+(?:[a-zA-Z]{2,}|xn--[a-zA-Z0-9]+)$/i,
// 国际手机号验证(支持多种格式)
internationalPhone: /^\+?[1-9]\d{1,14}$/,
// 中国大陆手机号验证(更严格的格式)
cnPhone: /^1[3-9]\d{9}$/,
// 复杂URL验证(支持IPv4地址和端口号)
url: /^(https?:\/\/)?(?:www\.)?[a-zA-Z0-9.-]+(?:\.[a-zA-Z]{2,})+(?:\/[\w\-.~:/?#@![ DISCUZ_CODE_2 ]amp;'\(\)*+,;=]*)?$/i,
// 日期时间验证(支持多种格式)
datetime: /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])(?:\s+\d{2}:\d{2}(?::\d{2})?)?$/,
// 身份证号验证(支持15位和18位)
idCard: /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}(?:\d|X|x)$/,
// 复杂用户名验证(支持中文、字母、数字、下划线,4-20位)
username: /^[\u4e00-\u9fa5a-zA-Z0-9_]{4,20}$/,
// 密码强度高级验证
strongPassword: /^[A-Za-z\d@$!%*?&]{8,}$/,
// IPv4地址验证
ipv4: /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
// 银行卡号验证(Luhn算法前的格式验证)
bankCard: /^[0-9]{16,19}$/
},
// 执行验证
validate: function(data, field, customRule) {
var rule = customRule || this.rules[field];
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[field] = this.validate(data[field], field, rules[field]);
}
}
return results;
}
};
// 复杂文本内容分析与信息提取系统
var TextAnalysisSystem = {
// 提取指定类型的信息
extract: function(text, type) {
var patterns = {
emails: /[a-zA-Z0-9._%+-]+@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,}|xn--[a-zA-Z0-9]+)/gi,
phones: /\+?[1-9]\d{1,14}/g,
cnPhones: /1[3-9]\d{9}/g,
urls: /(https?:\/\/[\w\-.~:/?#@![ DISCUZ_CODE_2 ]amp;'\(\)*+,;=]+)/g,
dates: /\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])/g,
versions: /v?\d+\.\d+\.\d+(-\w+)?/g,
numbers: /-?\d+(\.\d+)?/g,
ipAddresses: /((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/g
};
var pattern = patterns[type];
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[keyword] = (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-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])$/, // YYYY/MM/DD
/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/, // YYYY-MM-DD
/^(0[1-9]|[12]\d|3[01])\/(0[1-9]|1[0-2])\/(\d{4})$/ // DD/MM/YYYY
];
for (var i = 0; i < patterns.length; i++) {
var match = date.match(patterns[i]);
if (match) {
if (i === 2) { // DD/MM/YYYY 格式
return match[3] + "-" + match[2] + "-" + match[1];
}
return match[1] + "-" + match[2] + "-" + match[3];
}
}
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, /[a-zA-Z0-9._%+-]+@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,}|xn--[a-zA-Z0-9]+)/gi),
phones: this.extractUnique(text, /\+?[1-9]\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-9]|1[0-2])[\/-](0[1-9]|[12]\d|3[01])/g).map(this.standardizeDate)
};
return extracted;
},
// 提取唯一值
extractUnique: function(text, pattern) {
var matches = text.match(pattern) || [];
var unique = {};
matches.forEach(function(match) {
unique[match.toLowerCase()] = match;
});
return Object.keys(unique).map(function(key) {
return unique[key];
});
}
};
// 日志分析与监控系统
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[1],
level: match[2],
message: match[3].trim(),
details: {}
};
// 解析详细信息
var details = match[4].split(", ");
details.forEach(function(detail) {
var parts = detail.split(": ");
if (parts.length === 2) {
entry.details[parts[0].trim()] = parts[1].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[1]);
}
});
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[item] = (counts[item] || 0) + 1;
});
return counts;
}
};
// 高级模板引擎与替换系统
var TemplateEngine = {
// 替换模板变量
render: function(template, data) {
return template.replace(/\{\{([^}]+)\}\}/g, function(match, key) {
return data[key] || match;
});
},
// 带过滤器的模板替换
renderWithFilters: function(template, data, filters) {
return template.replace(/\{\{([^|}]+)(\|([^}]+))?\}\}/g, function(match, key, filterWithPipe, filterName) {
var value = data[key] || match;
if (filterName && filters[filterName]) {
return filters[filterName](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[pattern]);
}
}
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 (/[a-z]/.test(password)) {
strength += 20;
} else {
feedback.push("包含小写字母");
}
// 包含大写字母
if (/[A-Z]/.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,}|[a-zA-Z]{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[i], 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], key);
printl(key, userData[key] + " => " + (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 = "[2024-01-15 10:30:25] INFO: 用户登录成功 - userId: 12345[2024-01-15 10:31:45] ERROR: 数据库连接失败 - code: 500, message: connection timeout[2024-01-15 10:32:10] WARN: 磁盘空间不足 - used: 85%, threshold: 80%[2024-01-15 10:33:00] INFO: 文件上传完成 - filename: report.pdf, size: 2.5MB[2024-01-15 10:34:22] 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();
复制代码
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2