康煕部首、CJK部首補助、サロゲートペアの検出ブックマークレット

ウェブページに康煕部首、CJK部首補助、サロゲートペアが含まれているか確認するためのブックマークレットをGeminiに作ってもらった。サロゲートペアは「CJK統合漢字拡張B以降」と表現している。

javascript:(function() {
    const patterns = {
        "康煕部首": /[\u2F00-\u2FDF]/g,
        "CJK部首補助": /[\u2E80-\u2EFF]/g,
        "CJK統合漢字拡張B以降": /[\u{20000}-\u{2FFFF}]/ug,
        "絵文字": /[\u{1F000}-\u{1FFFF}\u{1F300}-\u{1F64F}\u{1F680}-\u{1F6FF}\u{1F700}-\u{1F77F}\u{1F780}-\u{1F7FF}\u{1F800}-\u{1F8FF}\u{1F900}-\u{1F9FF}\u{1FA00}-\u{1FAFF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}\u{1F1E6}-\u{1F1FF}\u{1F191}-\u{1F251}\u{1F004}\u{1F0CF}\u{1F170}-\u{1F171}\u{1F17E}-\u{1F17F}\u{1F18E}\u{3030}\u{3297}\u{3299}\u{FE00}-\u{FE0F}\u{1F018}-\u{1F02F}]/ug
    };
    const bodyText = document.body.innerText;
    const foundChars = [];

    for (const [name, pattern] of Object.entries(patterns)) {
        const matches = bodyText.match(pattern);
        if (matches && matches.length > 0) {
            foundChars.push(`${name}: ${matches.join('')}`);
        }
    }

    let message = "";
    if (foundChars.length > 0) {
        message = foundChars.join('\n');
    } else {
        message = "このページには康煕部首、CJK部首補助、CJK統合漢字拡張B以降の文字、絵文字は含まれていません。";
    }
    alert(message);
})();

コメント