基于JavaScript的关键词过滤示例

news/2024/11/6 12:05:45/文章来源:https://www.cnblogs.com/getuser/p/18529706
业务场景中,合作第三方的的各种AI内容审核模型,完全达不到满意的状态,奇怪这么简单的一个东西,有这么复杂吗,自己动手来一个DEMO,给开发,仅供参考。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>关键词过滤器</title>
</head>
<body><h2>关键词过滤器</h2><textarea cols=60 rows=10 id="userInput" placeholder="请输入内容..."></textarea><br>
<button onclick="filterKeywords()">提交</button><h3>过滤后的内容:</h3>
<textarea cols=60 rows=10 id="filteredOutput" readonly></textarea><h3>关键词(用逗号分隔):</h3>
<textarea cols=60 rows=10 id="keywordsInput">http,https,qq,wechat,weixin,.net,.org,.cn,fuck,.com,what app</textarea><script>// 提交时获取关键词并进行过滤function filterKeywords() {const content = document.getElementById("userInput").value;const keywords = getKeywords(); // 获取当前输入的关键词列表
        const filteredContent = filterContent(content, keywords);document.getElementById("filteredOutput").value = filteredContent;}// 获取关键词并生成数组function getKeywords() {const input = document.getElementById("keywordsInput").value;return input.split(",").map(keyword => keyword.trim().toLowerCase()).filter(Boolean);}// 过滤内容中的关键词及前10个字符和后30个字符function filterContent(content, keywords) {let result = content;// 构建适用于一般关键词和特殊关键词的正则
        const generalKeywords = keywords.filter(k => !k.includes('.')).join("|"); // 一般关键词
        const specialKeywords = keywords.filter(k => k.includes('.')).join("|"); // 特殊关键词// 针对一般关键词使用单词边界匹配
        const generalRegex = new RegExp(`(${generalKeywords})`, "gi");// 针对特殊关键词,不使用单词边界
        const specialRegex = new RegExp(`(${specialKeywords})`, "gi");// 替换一般关键词及其前10个字符和后30字符
        result = replaceKeywords(result, generalRegex);// 替换特殊关键词及其前10个字符和后30字符
        result = replaceKeywords(result, specialRegex);return result;}// 替换内容中匹配的关键词及其前10个字符和后30个字符function replaceKeywords(content, regex) {let result = content;let match;while ((match = regex.exec(content)) !== null) {const start = match.index;const end = Math.min(content.length, start + match[0].length + 30);  // 后30个字符
            const startReplace = Math.max(0, start - 10);  // 前10个字符
            const replaceStr = '*'.repeat(end - startReplace);  // 计算总替换长度
result = result.slice(0, startReplace) + replaceStr + result.slice(end);regex.lastIndex = startReplace + replaceStr.length; // 更新正则搜索起点,避免无限循环
        }return result;}
</script></body>
</html>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827586.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中电金信:企业数据赋能效果差,科学试错体系了解一下?

​ Wuhu,咨询专题第五期内容来啦~ 继先后讲解了企业数字化转型 过程中的价值创造、运营变革 以及平台化建设等难题如何解决后本期我们一起来关注 企业科学试错体系构建事情是这样的 👇 👇 👇 随着金融数字化转型的深入推进,以大数据为基础的智能化应用大量涌现,使得数…

【华为笔试-3】HJ20 密码验证合格程序

【华为笔试-3】HJ20 密码验证合格程序HJ20 密码验证程序输入: 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000输出: OK NG NG OK注:输入结束后有中止结束标志EOF【这个原题给的时候无说明,自己跑他的用例和看论坛看出来的】题解: 要点有三个,分别是:长度超过八位、包含三…

记Linux使用异常2

麒麟v10系统开机后提示如下信息,并进入initramfs模式,[0.224166][ 0l dmi: Firmware registration failed, [0.936010][ 0] serial8250 serial8250.0: unable to register port at index 1 (IOFFFFF10204000000 MEM0 IRQ0): -22 [1.829735][ 0] i8042: i8042 controller self…

SVN集成ExcelMerge

在SVN中对比表格差异时,如果只是一个sheet的CSV表格,SVN自带的diff效果也很好,如果是多个Sheet的xlsx表格,,SVN自带的diff效果就很差 ExcelMerge是一个在Windows平台下比对Excel的工具,当Excel存在多个Sheet时也能很好的支持差异的比对,配合上svn可以很好的查看策划的数…

homeassistant docker搭建并接入米家设备

homeassistant docker搭建教程: 下载镜像 docker pull homeassistant/home-assistant:latest 找个顺眼的地方建立目录,如/etc/dockerdata/homeassistant创建容器 mkdir /etc/dockerdata mkdir /etc/dockerdata/homeassistant然后执行命令: docker run -d \--name homeassist…

例题7.3

import numpy as np from scipy.interpolate import lagrange import matplotlib.pyplot as plt import matplotlib yx = lambda x: 1/(1+x**2)def fun(n):x = np.linspace(-5, 5, n+1)p = lagrange(x, yx(x)) # n次插值多项式return px0 = np.linspace(-5, 5, 100)plt.rc(fo…

Windows10 移动热点无法连接

一:windows10 移动热点手机无法连接 1.查看原因手机连接不上,看看是不是一直在现实获取ip地址2.网卡设置当打开移动热点时候,会有一张网卡 名称为 Microsoft Wi-Fi xxxxx打开你的上网网卡-属性->共享(右上角)->开启连接共享->选择Microsoft Wi-Fi 那张网卡连接成…

解决修改php.ini配置文件不生效的问题

公司禅道研发反馈任务创建的多了就报:Allowed memory size of 33554432 bytes exhausted (tried to alloate 3643528 bytes) in lib/base/front/front.class.php on line 1315 when visiting /index.php?m=execution&f=task&id=28;通过报错即可得知,php的memory_li…

Error:Kotlin: Module was compiled with an incompatible version of Kotlin.

idea 启动项目时报错 Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.1.16. 解决方案(windows): 1、打开Kotlin面板 路径:File -> settings -> Languages & F…

JavaScript用法

JavaScript 用法HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。 Javascript 脚本代码可被放置在 HTML 页面的 <body> 和 <head> 部分中。<script> 标签 如需在 HTML 页面中插入 JavaScript,请使用 <script> 标…

在vite里面,使用linaria,css样式名混淆的问题

我们项目使用css in js来实现样式,借用了一个插件linaria。但是有一个问题,就是样式名会被混淆如下解决方法是,vite配置里面加一个 就可以了,结果如下

刚毕业,去做边缘业务,还有救吗?

有一些同时拿到了多个 Offer 的同学,会纠结于如何选择。其中有一些比较共性的问题,比如 “刚毕业,去做边缘业务,会不会影响后面的人生呢?”大家好,我是程序员鱼皮。今年的秋招已经接近尾声,我陆续收到了很多小伙伴们的 Offer 报喜。有一些同时拿到了多个 Offer 的同学,…