【发布时间】:2019-07-22 03:29:00
【问题描述】:
这几天我一直在玩口袋妖怪 API。
我有一个列出所有口袋妖怪的数组,并且有一个看起来像这样的字符串 ''
我想检查这个字符串,对照一个数组并得到那个确切的名字
我的问题是我还得到了会被包含在内的东西,比如 pidgeot。
如何将数组与字符串完全匹配并且只记录一个名称?
let pokemonArray = ["pidgeot", "pidgeotto", "charizard", "goldeen"];
let y = '<@user_id> pidgeotto';
function handleMessage(message) {
for (let i = 0; i <= message.length; i++) {
if (y.includes(message[i])) {
console.log(message[i])
}
}
}
handleMessage(pokemonArray);
没有错误,只是没有得到我想要的结果。
【问题讨论】:
-
您可以使用
==运算符来代替includes。如果字母大小写不同,您可以在比较之前转换为相同的大小写。 -
if(new RegExp('\\b' + message[i] + '\\b', "i").test(y)) { } -
@adiga 如果用户可以控制消息,那是不安全的。他们可能在消息的末尾有
|.*,或者他们可以通过导致灾难性的回溯来执行 ReDOS 攻击 -
@Paulpro 副本也有一个
escapeRegExp方法。
标签: javascript node.js