[英]How to make a simple jQuery filter list accept only whole words, so it doesn't match partial words, only whole words
[英]Filter out Certain Words and Match only EXACT Words
我有一个包含所有股票代码的数组。 当用户发布消息'TSLA will open green tomorrow.'
,我想检测'TSLA'
这个词。 但问题是我的代码也在检测'T'
、 'S'
和'LA'
,因为这些都是有效的股票代码。
因此,我创建了一个禁止符号列表,其中包含从A
到Z
的每个大写字母。 但我不知道如何应用它。
const url = 'https://dumbstockapi.com/stock?format=tickers-only&exchange=NASDAQ,NYSE,AMEX';
const bodyArray = [];
const blockedList = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
request(url, (error, { statusCode }, body) => {
return error ? console.log(error) : statusCode == 200 ? bodyArray.push(JSON.parse(body)) : 0;
});
client.on('message', msg => {
const { content, author: { tag } } = msg;
const [arr] = bodyArray;
const blocked = arr.indexOf(word => content.toUpperCase().includes(word) > -1);
if (blocked.length) {
console.log(`${tag} used a word in list.`);
return msg.delete().catch(console.error);
}
});
您需要使用RegExp
来匹配列表中的每个股票代码,但使用\b
边界符号来防止在匹配项中找到匹配项。
const string = 'TSLA will open green tomorrow. LA will too.'; const symbols = ['T', 'S', 'LA', 'TSLA']; const regExpString = String.raw`\b`+ symbols.join(String.raw`\b|\b`); const regExp = new RegExp(regExpString, 'gi'); const matches = string.match(regExp); console.log(matches); // [ 'TSLA', 'LA' ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.