indexOf()的非大小写敏感替换

时间:2016-06-18 11:28:25

标签: javascript

我正在为我使用的网站制作聊天机器人。我正在添加禁止的单词列表。我已经让它工作到某些用户不允许发布链接的地方。这是代码。

SoapServer

所以我所做的几乎与以上内容重复,但没有用户限制并添加了新词。这是代码。

if (text.indexOf("http://") > -1 || text.indexOf("https://") > -1) {
      if (isOwner || isStaff || user === "user") {}
      else if (!isSub) {
        moderation.timeout(name, 5);
        channel.sendMessage(name + ", only subs can post links.");
}

链接删除工作完全正常。我不认为if (text.indexOf("http://") > -1 || text.indexOf("https://") > -1) { if (isOwner || isStaff || user === "user") {} else if (!isSub) { moderation.timeout(name, 5); channel.sendMessage(name + ", only subs can post links."); } } if (text.indexOf("word1") > -1 || text.indexOf("word2") > -1 || text.indexOf("word3") > -1) { moderation.timeout(name, 5); channel.sendMessage(name + ", please don't be rude."); } 对于禁止列表这个词是区分大小写的。使用不区分大小写的函数有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

您需要规范化两个字符串的大小写,然后执行indexOf

function indexOfCaseInsenstive(a, b) {
  a = a.toLowerCase();
  b = b.toLowerCase();

  return a.indexOf(b);
}

答案 1 :(得分:1)

创建单词列表,为其创建正则表达式并针对传入消息测试正则表达式:

const forbiddenWords = ['http://', 'word1', 'word2'];
const regexp = new RegExp(forbiddenWords.join('|'), 'i');

if(regexp.test(message)) {
    // you have a forbidden message.
}