Câu hỏi:

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:

  1. Chúng ta sẽ bắt đầu bằng việc nối chuỗi các biểu tượng trong mảng 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.
  2. Bao quanh chuỗi regex này với dấu "\b" (biên từ) để đảm bảo các biểu tượng sẽ đứng một mình hoặc ngăn cách bằng dấu cách.

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 đó:

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é! 😄


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử