Php 使用javascript将单词数组与textarea输入进行比较

Php 使用javascript将单词数组与textarea输入进行比较,php,javascript,html,security,validation,Php,Javascript,Html,Security,Validation,我在表单中有一个文本区域 在提交表单之前,验证并检查文本区域,使其不为空、不超过2000个字符、不包含禁止字符等 我正在进行验证的最后一部分,需要将textarea与一系列“坏词”进行比较 这有助于我在网站上保持良好的“语言” 我对js不是很在行,那么有人知道如何将textarea中的每个单词与坏单词数组进行比较吗? 此外,这会大大降低验证速度吗?(数组最多包含100个字)。 谢谢如果您想检查是否存在“咒骂1”和“咒骂2”,请执行以下操作: my_textarea = document.getE

我在表单中有一个文本区域

在提交表单之前,验证并检查文本区域,使其不为空、不超过2000个字符、不包含禁止字符等

我正在进行验证的最后一部分,需要将textarea与一系列“坏词”进行比较

这有助于我在网站上保持良好的“语言”

我对js不是很在行,那么有人知道如何将textarea中的每个单词与坏单词数组进行比较吗?

此外,这会大大降低验证速度吗?(数组最多包含100个字)。


谢谢

如果您想检查是否存在“咒骂1”和“咒骂2”,请执行以下操作:

my_textarea = document.getElementById('textarea_id');

if (/\b(?=\w)(expletive1|expletive2)\b(?!\w)/i.test(my_textarea.value)) {
    // we found bad words!  do something
} else {
    // no bad words found, carry on, nothing to see here
}
你只需要以同样的方式在列表中添加更多的单词(咒骂1 |咒骂2 |咒骂3 |咒骂4)


请记住,要完全避免应用程序中的文字,您还需要进行服务器端过滤。

如果您想检查是否存在“咒骂1”和“咒骂2”,请执行以下操作:

my_textarea = document.getElementById('textarea_id');

if (/\b(?=\w)(expletive1|expletive2)\b(?!\w)/i.test(my_textarea.value)) {
    // we found bad words!  do something
} else {
    // no bad words found, carry on, nothing to see here
}
var bad_words = ['stupid', 'dang']; // watered down
for (var i = 0; i <= bad_words.length; i++) {
    if (document.getElementById('my_textarea').value.match(bad_words[i])) {
        // has bad word!
    }
}
你只需要以同样的方式在列表中添加更多的单词(咒骂1 |咒骂2 |咒骂3 |咒骂4)

请记住,要完全避免应用程序中的文字,您还需要进行服务器端过滤。

var bad_words=['dumby','dang'];//淡化
var bad_words = ['stupid', 'dang']; // watered down
for (var i = 0; i <= bad_words.length; i++) {
    if (document.getElementById('my_textarea').value.match(bad_words[i])) {
        // has bad word!
    }
}
对于(var i=0;i
var bad_words=['dumby','dang'];//淡化

对于(var i=0;i,此代码用*****

// creating regex
var words = ['bad', 'words'];
var wordsStr = "";
for(var i=0; i<words.length; i++) {
    wordsStr += words[i];
    if (i < words.length -1) {
        wordsStr += "|";
    }
}
// wordsStr is "bad|words"
var regex = new RegExp(wordsStr, "gi"); // g: replace all; i:insensitive

// replacing
var text = "I cant say bad words!";
text = text.replace(regex, "****");
// text is "I cant say **** ****!"
//创建正则表达式
var words=['bad','words'];
var wordsStr=“”;

对于(var i=0;i,此代码用*****

// creating regex
var words = ['bad', 'words'];
var wordsStr = "";
for(var i=0; i<words.length; i++) {
    wordsStr += words[i];
    if (i < words.length -1) {
        wordsStr += "|";
    }
}
// wordsStr is "bad|words"
var regex = new RegExp(wordsStr, "gi"); // g: replace all; i:insensitive

// replacing
var text = "I cant say bad words!";
text = text.replace(regex, "****");
// text is "I cant say **** ****!"
//创建正则表达式
var words=['bad','words'];
var wordsStr=“”;


对于(var i=0;i如果您愿意,您可以对我进行下表决,但可能首先不要尝试筛选:D

如果您愿意,您可以对我进行下表决,但可能首先不要尝试筛选:D

客户端验证很容易被绕过,您应该在服务器端检查这类事情(或者你打算同时做这两件事?)实际上,我只计划了客户端,因为我也会手动查看每篇文章……这只是为了让我的工作更容易……客户端验证很容易被绕过,你应该在服务器端检查这类事情(或者你打算同时做这两件事?)事实上,我只计划客户端,因为我也会手动浏览每篇文章…这只是为了让我的工作更轻松…这会不会尝试将整个textarea句子与每个单词匹配?我需要拆分textarea以逐字检查。这是一个相当幼稚的正则表达式,最终会禁止使用“分类”之类的单词。这更干净nd更容易管理,所以它也值得称赞。在if语句中编辑单词列表很难看。Camran,也许你可以将Aaron和Jonah的答案结合起来。实际上,如果你想在数组中编辑单词列表而不是正则表达式,那么我喜欢Topera的解决方案,它可以更好地从数组中构建正则表达式只有一个正则表达式被调用,而不是每一个坏单词调用一个正则表达式(我还没有测试过很多简单正则表达式和1个更复杂的正则表达式,但我的直觉告诉我1个正则表达式的性能会显著提高).Topera只需要在正则表达式的前端和末尾粘贴单词分隔符,这样他就只能匹配整个单词。这会不会尝试将整个textarea语句与每个单词匹配?我需要拆分textarea以逐字检查。这是一个相当幼稚的正则表达式,最终将禁止使用“分类”之类的单词。这样更干净,更易于管理但是,这也值得称赞。在if语句中编辑单词列表很难看。Camran,也许你可以将Aaron和Jonah的答案结合起来。事实上,如果你想在数组中编辑单词列表而不是正则表达式,那么我喜欢Topera的解决方案,即从数组中更好地构建正则表达式。它只会生成一个正则表达式bein每一个不好的词都调用g而不是1(我没有测试过很多简单的正则表达式和1个更复杂的正则表达式,但我的直觉告诉我1个正则表达式的性能会显著提高).Topera只需要在正则表达式的前端和末尾粘贴单词分隔符,这样他就可以只匹配整个单词。是否简化代码以便我理解?这会将textarea中的每个单词匹配到数组中吗?进行了一些编辑,希望能澄清一点。它将查看整个文本区域,如果在e文本区域。请记住,这是一个非常简单的正则表达式,很容易规避(即:就这个正则表达式而言,poop与poops是不同的)。好的,那么如果我在列表中同时添加“poop”和“poops”会怎么样?你的意思是它与“poops”不匹配吗?谢谢你如果同时添加“poop”和“poops”然后它将匹配这两个词。我刚刚指出,你必须输入每一个坏单词,每个可能的变体、后缀和前缀。只需在列表中输入“poop”,就可以编写一个更复杂的正则表达式来匹配poops、pooping、pooped等(但这样你更可能意外地得到误报)。如果你有“poops”在里面,它就会匹配。他的意思是正则表达式(regex)不会检测复数,但你可以这样设置。我感觉你不知道它们是什么。它们可以通过字符、长度甚至特定的单词限制输入。有很多控制…还有很多学习。查看此网站:是否简化代码以便我理解?这会使文本区域中的每个单词与arr匹配吗ay?进行了一些编辑,希望能澄清一点。它将查看整个文本区域,如果在文本区域中找到任何这些单词,则进行匹配。请记住,这是一个非常简单的正则表达式,很容易规避(即:就这个正则表达式而言,poop与poop是不同的)