tôi có một mảng để hiển thị icon trong tin nhắn sau: const symbolList = const symbolList = [ ":)", ":~", ":b", ":')", "8-)", ":-((", ":$", ":3", ":z", ":((", "&-(", ":-h", ":p", ":d", ":o", ":(", ";-)", "--b", ":))", ":-", ";p", ";-d", "/-showlove", ";d", ";o", ";g", "|-)", ":!", ":l", ":>", ":;", ";f", ":v", ":wipe", ":-dig", ":handclap", "b-)", ":-r", ":-<", ":-o", ";-s", ";?", ";-x", ":-f", "8)", ";!", ";-!", ";xx", ":-bye", ">->", "p-(", ":--|", ":q", "x-)", ":", ";-a", "8", ":|", ":x", ":t", ";-/", ":-l", "$-)", "/-beer", "/-coffee", "/-rose", "/-fade", "/-bd", "/-bome", "/-cake", "/-heart", "/-break", "/-shit", "/-li", "/-flag", "/-strong", "/-weak", "/-ok", "/-v", "/-thanks", "/-punch", "/-share", "()", "/-no", "/-bad", "/-loveu" ] Mong muốn: tạo ra regex để check tin nhắn đó có icon điều kiện có icon là 1 phần tử trong mảng đó đứng một mình hoặc ngăn cách với tin nhắn dạng chữ bằng dấu cách
Chào mừng bạn đến với thế giới tràn ngập biểu tượng và regex! Chúng ta sẽ tạo một regex giúp kiểm tra xem tin nhắn có chứa các biểu tượng đáng yêu từ mảng symbolList
của bạn hay không. Hãy cùng bắt tay vào thôi!
Dưới đây là cách tạo regex phù hợp với yêu cầu của bạn:
symbolList
thành một chuỗi regex dùng dấu "|" để biểu thị sự lựa chọn giữa các biểu tượng.Dưới đây là mã JavaScript để tạo regex từ mảng biểu tượng và kiểm tra tin nhắn của bạn:
const symbolList = [
":)", ":~", ":b", ":')", "8-)", ":-((", ":$", ":3", ":z", ":((", "&-(",
":-h", ":p", ":d", ":o", ":(", ";-)", "--b", ":))", ":-*", ";p", ";-d",
"/-showlove", ";d", ";o", ";g", "|-)", ":!", ":l", ":>", ":;", ";f", ":v",
":wipe", ":-dig", ":handclap", "b-)", ":-r", ":-<", ":-o", ";-s", ";?",
";-x", ":-f", "8*)", ";!", ";-!", ";xx", ":-bye", ">->", "p-(", ":--|",
":q", "x-)", ":*", ";-a", "8*", ":|", ":x", ":t", ";-/", ":-l", "$-)",
"/-beer", "/-coffee", "/-rose", "/-fade", "/-bd", "/-bome", "/-cake",
"/-heart", "/-break", "/-shit", "/-li", "/-flag", "/-strong", "/-weak",
"/-ok", "/-v", "/-thanks", "/-punch", "/-share", "_()_", "/-no", "/-bad",
"/-loveu"
];
// Escape special characters for regex
const escapedSymbols = symbolList.map(s => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
// Combine into a single regex pattern
const regexPattern = escapedSymbols.join('|');
// Create regex with word boundaries
const regex = new RegExp(`\\b(${regexPattern})\\b`, 'g');
// Example function to check for icons in a message
function containsIcon(message) {
return regex.test(message);
}
// Test messages
const testMessages = [
"Hello :)", // Should detect :)
"Hi there :-)", // Should detect 8-)
"No icons here!", // No icon
"Mixed: :) and :$ symbols.", // Should detect :) and :$
];
testMessages.forEach(msg => {
console.log(`Message: "${msg}" - Contains icon: ${containsIcon(msg)}`);
});
Trong đó:
escapedSymbols
là mảng chứa các biểu tượng đã được xử lý để escape các kí tự đặc biệt trong regex.regexPattern
là chuỗi regex được tạo để chứa tất cả các biểu tượng.regex
là regex được tạo ra với biểu tượng biên từ \b
để đảm bảo rằng các biểu tượng sẽ đứng một mình hoặc ngăn cách bằng dấu cách.Với đoạn mã trên, bạn có thể kiểm tra tin nhắn của mình có chứa các biểu tượng trong symbolList
hay không.
Đừng quên ghé thăm trituenhantao.io nếu bạn cần thêm thông tin về AI và công nghệ! Chúc bạn vui vẻ với các biểu tượng tin nhắn nhé! 😄