/編集: 投稿全体を書き直しました。
以下は、VB の強調表示の問題に対するかなり完全な解決策です。SO にこれ以上ないものがある場合は、それを使用してください。VB 構文の強調表示は絶対に必要です。
また、正しく強調表示される複雑なコード リテラルを含むコード例も追加しました。ただし、XLinq を正しくしようとさえしていません。それでもうまくいくかもしれませんが。キーワード リストは MSDN から取得されます。コンテキスト キーワードは含まれません。GetXmlNamespaceオペレーターはわかりましたか?
アルゴリズムは、リテラル タイプの文字を認識します。識別子タイプの文字も処理できるはずですが、これらはテストしていません。コードはHTMLで動作することに注意してください。結果として、&、<、および > は、単一の文字ではなく、名前付き (!) エンティティとして読み取る必要があります。
長い正規表現で申し訳ありません。
var highlightVB = function(code) {
    var regex = /("(?:""|[^"])+"c?)|('.*$)|#.+?#|(&[HO])?\d+(\.\d*)?(e[+-]?\d+)?U?([SILDFR%@!#]|&)?|\.\d+[FR!#]?|\s+|\w+|&|<|>|([-+*/\\^$@!#%&<>()\[\]{}.,:=]+)/gi;
    var lines = code.split("\n");
    for (var i = 0; i < lines.length; i++) {
        var line = lines[i];
        var tokens;
        var result = "";
        while (tokens = regex.exec(line)) {
            var tok = getToken(tokens);
            switch (tok.charAt(0)) {
                case '"':
                    if (tok.charAt(tok.length - 1) == "c")
                        result += span("char", tok);
                    else
                        result += span("string", tok);
                    break;
                case "'":
                    result += span("comment", tok);
                    break;
                case '#':
                    result += span("date", tok);
                    break;
                default:
                    var c1 = tok.charAt(0);
                    if (isDigit(c1) ||
                        tok.length > 1 && c1 == '.' && isDigit(tok.charAt(1)) ||
                        tok.length > 5 && (tok.indexOf("&") == 0 &&
                        tok.charAt(5) == 'H' || tok.charAt(5) == 'O')
                    )
                        result += span("number", tok);
                    else if (isKeyword(tok))
                        result += span("keyword", tok);
                    else
                        result += tok;
                    break;
            }
        }
        lines[i] = result;
    }
    return lines.join("\n");
}
var keywords = [
    "addhandler", "addressof", "alias", "and", "andalso", "as", "boolean", "byref",
    "byte", "byval", "call", "case", "catch", "cbool", "cbyte", "cchar", "cdate",
    "cdec", "cdbl", "char", "cint", "class", "clng", "cobj", "const", "continue",
    "csbyte", "cshort", "csng", "cstr", "ctype", "cuint", "culng", "cushort", "date",
    "decimal", "declare", "default", "delegate", "dim", "directcast", "do", "double",
    "each", "else", "elseif", "end", "endif", "enum", "erase", "error", "event",
    "exit", "false", "finally", "for", "friend", "function", "get", "gettype",
    "getxmlnamespace", "global", "gosub", "goto", "handles", "if", "if",
    "implements", "imports", "in", "inherits", "integer", "interface", "is", "isnot",
    "let", "lib", "like", "long", "loop", "me", "mod", "module", "mustinherit",
    "mustoverride", "mybase", "myclass", "namespace", "narrowing", "new", "next",
    "not", "nothing", "notinheritable", "notoverridable", "object", "of", "on",
    "operator", "option", "optional", "or", "orelse", "overloads", "overridable",
    "overrides", "paramarray", "partial", "private", "property", "protected",
    "public", "raiseevent", "readonly", "redim", "rem", "removehandler", "resume",
    "return", "sbyte", "select", "set", "shadows", "shared", "short", "single",
    "static", "step", "stop", "string", "structure", "sub", "synclock", "then",
    "throw", "to", "true", "try", "trycast", "typeof", "variant", "wend", "uinteger",
    "ulong", "ushort", "using", "when", "while", "widening", "with", "withevents",
    "writeonly", "xor", "#const", "#else", "#elseif", "#end", "#if"
]
var isKeyword = function(token) {
    return keywords.indexOf(token.toLowerCase()) != -1;
}
var isDigit = function(c) {
    return c >= '0' && c <= '9';
}
var getToken = function(tokens) {
    for (var i = 0; i < tokens.length; i++)
        if (tokens[i] != undefined)
            return tokens[i];
    return null;
}
var span = function(class, text) {
    return "<span class=\"" + class + "\">" + text + "</span>";
}
テスト用のコード:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    'set page title
    Page.Title = "Something"
    Dim r As String = "Say ""Hello"""
    Dim i As Integer = 1234
    Dim d As Double = 1.23
    Dim s As Single = .123F
    Dim l As Long = 123L
    Dim ul As ULong = 123UL
    Dim c As Char = "x"c
    Dim h As Integer = &H0
    Dim t As Date = #5/31/1993 1:15:30 PM#
    Dim f As Single = 1.32e-5F
End Sub