您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
日期绿色
// ==UserScript== // @name 日期改色 // @namespace http://tampermonkey.net/ // @version 1.3 // @description 日期绿色 // @author ChenHongJiang // @match *://*/* // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // '',// 👉 // 定义日期格式的正则表达式 // 空格 ' +kg+ ' const kg = '(?: |\\s*)?'; // 前后非数字 ' +noNum+ ' const noNum = '(?!\\d)'; // 汉字数字 ' +hanNum+ ' const hanNum = '(?:十|二十|三十|四十|五十|六十|七十|八十|九十)?(?:一|单|單|兩|两|二|三|四|两|五|六|七|八|九|十)'; // 量词 ' +liangCi+ ' const liangCi = '(?:亿万|万亿|千亿|百亿|十亿|千万|百万|十万|億萬|萬億|千億|百億|十億|千萬|百萬|十萬|萬|億|亿|万|千|百|十|\\+)?'; // 前面词 2000 ' +qmcEN+ ' const qmcEN = '(?:in|to|for|into|of|by|since|at|on|with|from|about|through|over|under|between|among|across|toward|towards|against|beside|before|after|except|including|like|without|year|trends)'; const datePatterns = [ noNum+ '\\d{4}' +noNum +kg+ '(?:-|.)' +kg+ noNum+ '\\d{2}' +noNum +kg+ '(?:-|.)' +kg+ noNum+ '\\d{2}' +noNum, // 👉 0000-00-00 '\\b\\d{4}' +kg+ '-' +kg+ '\\d{2}' +kg+ '-' +kg+ '\\d{2}\\b', // 👉 0000-00-00 '(截(?:至|止))?\\d+' +kg+ '年' +kg+ '\\d+' +kg+ '月' +kg+ '\\d+' +kg+ '日', // 👉 0000年00月00日 '\\d+' +kg+ '年' +kg+ '\\d+' +kg+ '(?:月)?' +kg+ '(?:-|~)' +kg+ '\\d+月', // 👉 0000年00-00月 '\\d+' +kg+ '(?:年|月)' +kg+ '\\d+' +kg+ '(?:月|日)', // 👉 0000年00月 '(?:(\\d+)|(?:上个|最新|春节|今|去|前|明|本))' +kg+ '年?' +kg+ '第?' +hanNum+ '?个?(?:季度|多月|月份)', // 👉 0000年一季度 '\\b' +noNum+ '\\d{1,2}' +noNum +kg+ '-' +kg+ noNum+ '\\d{1,2}' +kg+ '(?=\\s|$)', // 👉 00-00 '(?:(截(?:至|止))|(?:前年|今年|明年))?' +kg+ '(?:(\\d{1,12})|' +hanNum+ ')' +kg+ '月'+kg+ '(?:(\\d{1,12})|' +hanNum+ ')?' +kg+ '(?:日|底|号)?', // 今年0月0日 noNum+ '(?:\\d{2}|\\d{4})' +kg+ '(?:财年|年)?' +kg+ '(?:-|~|、|—|to|至|到)' +kg+ '(?:\\d{2}|\\d{4})' +noNum +kg+ '(?:财年|年|个月|月)?', //👉 0000年 - 0000年 '\\d+' +kg+ '(?:财年|年)?' +kg+ '((?:Q|H)\\d+)', // 👉 0000年Q1 '(?:过去|最近|未来|那|这|上|下)?' +kg+ '(?:7(?:x|X|×))?(?:\\d{1,4}|' +hanNum+ ')' +kg+ liangCi+ '(?:周年|财年|年底|小时|分钟|个月|月份|(?:世纪|年代)|月|天|分|周|年|秒|点)' +kg+ '(?:之前|前|来|(?:中期|初|中|末))?', // 👉 0000 年 '(?:\\b)?(?:昨天|今天)' +kg+ '(?:\\d{1}' +noNum+ '|\\d{2}' +noNum+ ')' +kg+ '(?:(:)|:)' +kg+ '(?:\\d{1}' +noNum+ '|\\d{2}' +noNum+ ')', // 👉 昨/今天 00:00 '(?:\\b)?(?:\\d+)?(?:(?:前|昨|今|大后|后)天|(?:上|下)?半年|最近|近' +hanNum+ '年(半)?|(?:中上|中下|上|下|本|下|上)(?:季度|财年|午)|(?:近|长|中)期|短期内|(?:当|次)(?:季|月|年|日)|(?:年|季|月|旬)(?:初|中|末)|(?:近|长)期趋势|(?:短|长|中)期(?:波动|增长|调整|稳定)|(?:季节|周期)性|(?:年|季|月|周|日)度)|' +hanNum+ '岁',// 👉 前天,补漏单独词 '(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)' +kg+ '[A-Za-z]' +kg+ '\\d{1,2},' +kg+ '\\d{4}' +kg+ '(?=\\s|$)', // 👉 Wed April 30, 2025 '(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|January|February|March|April|May|June|July|August|September|October|November|December|early)' +kg+ '\\d{1,2}' +kg+ ',' +kg+ '\\d{4}',// 👉 May 05, 2025 '\\d{1,2}?' +kg+ '(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|January|February|March|April|May|June|July|August|September|October|November|December|early)' +kg+ '\\d{4}',// 👉 26 February 2024 'Q\\d+' +kg+ '\\d{4}' +noNum,// 👉 Q4 2023 qmcEN +kg+ '\\d{4}(?!.)' +noNum,// 👉 in 2024 'q' +kg+ '\\d+' +kg+ qmcEN +kg+ '\\d{4}' +noNum,// 👉 Q4 of 2023 '\\d+' +kg+ '(?:\\+)?' +kg+ '(?:min|minute)', // 10 min ]; const dateFormatRegex = new RegExp(datePatterns.join('|'), 'gi'); // 亮绿:#6bd167✔ 暗绿:#338143 英伟达绿:#76B900 鼠标绿:#BFFF00 微信绿:#52CE42✔ 沉浸式翻译绿:#67CC51✔ 鹦鹉绿:#5bae23✔ // #41b349 #43b244 #41ae3c // 定义要应用的样式 const style = ` color: #5bae23 !important; font-weight: 600 !important; font-family: "Microsoft YaHei" !important; text-shadow: none !important; `; // 遍历页面中所有的元素 const elements = document.querySelectorAll('*'); setTimeout(() => { elements.forEach(element => { // 获取元素的所有文本节点 const textNodes = getTextNodes(element); // 遍历每个文本节点 textNodes.forEach(textNode => { // 检查文本内容是否包含日期格式 if (dateFormatRegex.test(textNode.nodeValue)) { // 匹配所有日期格式 const matches = textNode.nodeValue.match(dateFormatRegex); // 从后向前处理每个匹配项 for (let i = matches.length - 1; i >= 0; i--) { const match = matches[i]; const index = textNode.nodeValue.indexOf(match); // 创建一个新 <font> 元素 const span = document.createElement('font'); span.style.cssText = style; span.textContent = match; // 使用 Range 来分割文本节点 const range = new Range(); range.setStart(textNode, index); range.setEnd(textNode, index + match.length); // 替换匹配的文本节点部分 range.deleteContents(); range.insertNode(span); } } }); }); }, 1000); // 延迟 0.5 秒 // 获取元素的所有文本节点 function getTextNodes(node) { const textNodes = []; if (node.nodeType === Node.TEXT_NODE) { textNodes.push(node); } else if (node.nodeType === Node.ELEMENT_NODE) { for (let child of node.childNodes) { textNodes.push(...getTextNodes(child)); } } return textNodes; } })();