gpt4 book ai didi

javascript - 特定词过滤器

转载 作者:行者123 更新时间:2023-12-05 06:54:50 24 4
gpt4 key购买 nike

如何让这段代码找到特定的单词而不是在单词之间检查?

示例:过滤词是 d**k 此代码将 Dickinson 算作一个坏词。

我希望它找到具有相同功能的特定单词,例如(在警报窗口中显示 + 计算单词数)

// Enter the words to be filtered in the line below:
var swear_words_arr=new Array("dick","bloody","war","terror");

var swear_alert_arr=new Array;
var swear_alert_count=0;
function reset_alert_count()
{
swear_alert_count=0;
}
function validate_text()
{
reset_alert_count();
var compare_text=document.form1.text.value;
for(var i=0; i<swear_words_arr.length; i++)
{
for(var j=0; j<(compare_text.length); j++)
{
if(swear_words_arr[i]==compare_text.substring(j,(j+swear_words_arr[i].length)).toLowerCase())
{
swear_alert_arr[swear_alert_count]=compare_text.substring(j,(j+swear_words_arr[i].length));
swear_alert_count++;
}
}
}
var alert_text="";
for(var k=1; k<=swear_alert_count; k++)
{
alert_text+="\n" + "(" + k + ") " + swear_alert_arr[k-1];
}
if(swear_alert_count>0)
{
alert("The message will not be sent!!!\nThe following illegal words were found:\n_______________________________\n" + alert_text + "\n_______________________________");
document.form1.text.select();
}
else
{
document.form1.submit();
}
}
function select_area()
{
document.form1.text.select();
}
window.onload=reset_alert_count;
body
{
background: #cbc3a6;
color: #37445D;
font: 15px/20px Verdana, Helvetica, Sans-Serif;
}

#container
{
margin: 0 auto;
width: 550px;
}

textarea
{
border: 2px solid #000;
display: block;
font: 14px Verdana, Arial, Helvetica;
margin: 0 0 15px 0;
overflow: auto;
padding: 5px;
resize: none;
width: 500px;
}

input[type="button"]
{
background-color: #fff;
background-image: none;
border: 1px solid #000;
border-radius: 8px;
color: #000;
display: table;
font-size: 16px;
margin: 0 auto;
padding: 5px 8px;
width: 175px;
}

input[type="button"]:hover
{
background-color: #666;
background-image: none;
color: #fff;
display: table;
font-size: 16px;
}
<h1>Bad Word Filter</h1>

<p>Disallows specific words to be sent in a form textarea.</p>
Disallows specific words to be sent in a form textarea.

<p>Try entering the words "dick", "bloody", "war", or "terror" in the text box and click Submit.</p>

<div id="container">
<form name="form1">
<textarea rows="3" cols="40" name="text" placeholder="Enter one of the bad words above and then try submitting the form." onClick="select_area()"></textarea>

<input type="button" value="Submit" onClick="validate_text();">
</form>

最佳答案

比较文本中的单词以查看它们是否存在于您的阻止列表中,好的,所以在您的代码中:

 if(swear_words_arr[i]==compare_text.substring(j, 
(j+swear_words_arr[i].length)).toLowerCase())
{
swear_alert_arr[swear_alert_count]=compare_text.substring(j,
(j+swear_words_arr[i].length));
swear_alert_count++;
}

正在将句子子字符串与列表中的单词进行比较。

相反,您可以使用词边界\b 词\b 来检查句子中是否存在被屏蔽的词:

创建一个辅助函数来帮助你得到匹配的句子,只需传入文本和wordsList。返回匹配列表。

function findWords (text, wordsList) {

let metachars = /[(){[*+?.\\^$|]/g;

for (var i = 0; i < wordsList.length; i++) {

wordsList[i] = wordsList[i].replace(metachars, "\\$&");
}

let regex = new RegExp("\\b(?:" + wordsList.join("|") + ")\\b", "gi");

return text.match(regex) || [];
}


关于javascript - 特定词过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65452631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com