Internet Explorer 8 Ошибка регулярного выражения JScript

Я тестирую в Internet Explorer 8 на Windows XP и сталкиваюсь с утомительной ошибкой. Я пытаюсь протестировать строки с помощью регулярного выражения, которое отлично работает в Firefox и прекрасно тестируется независимо в консоли ie8.

Но когда он через мою функцию замыкания, строка действует странно

[Редактировать] Более подробный код: не такой хороший или чистый, как предыдущий фрагмент.

var m_TableSorter = (function() {

    // static reg expression string and array for ordering dates
    var dateRegEx = new RegExp(
     "(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\\s\\d{4}");
     ...
     ...
    function greaterThan(left, right) {
        window["globalLeft"] = left;
        window["globalRight"] = right;
        var a = $.trim(left.toLowerCase());
        var b = $.trim(right.toLowerCase());
        window["globalA"] = a.toString();
        window["globalReg"] = dateRegEx;
        if (dateRegEx.test(a) && dateRegEx.test(b)) {
            var yearA = parseInt(a.substring(4,8), 10);
            var yearB = parseInt(b.substring(4,8), 10);
            if (yearA > yearB) {
                return true;
            } else if (yearB > yearA) {
                return false;
            } else {
                /* ... */
                var monthA =
                    $.inArray(a.substring(0,3).toUpperCase(), monthArray);
                var monthB = 
                    $.inArray(b.substring(0,3).toUpperCase(), monthArray);
                m_Debug.tryAssert(monthA >= 0, "Date string malformed");
                m_Debug.tryAssert(monthB >= 0, "Date string malformed");
                if (monthA > monthB) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        //alert("NONDATE");
        if ( a.toUpperCase() >= b.toUpperCase() ) {
            return true;
        }
        return false;
    }

    function mergeArrays(pr_left, pr_right, pr_compareFunction, pr_rowIndex) 
    {
        m_Debug.debugUtilityFunction(arguments);
        var results = new Array();
        var obj;
        /* Merges in order so that if right > left then the results is
         * [left right] otherwise the result is [right left] (Dependant on
         * ascending or descending order)
         */
        while (pr_left.length > 0 || pr_right.length > 0) {
            if (pr_left.length > 0 && pr_right.length > 0) {
                window["globalLeft1"] = $(pr_left[0].children[pr_rowIndex]).text().toString();
                window["globalRight1"] = $(pr_right[0].children[pr_rowIndex]).text().toString();
                var bool = pr_compareFunction(
                    $.trim($(pr_left[0].children[pr_rowIndex]).text()),
                    $.trim($(pr_right[0].children[pr_rowIndex]).text())
                );
                if (bool) {
                    results.push(pr_left.shift());
                } else {
                    results.push(pr_right.shift());
                }
            } else  if (pr_left.length > 0) {
                for (obj in pr_left) {
                    results.push(pr_left[obj]);
                }
                break;
            } else if (pr_right.length > 0) {
                for (obj in pr_right) {
                    results.push(pr_right[obj]);
                }
                break;
            }
        }
        return results;

    }

ДляmergeArrays функцияpr_left & pr_right Список jQuery объектов TR. и я сравниваю текст вpr_rowIndex-th ячейка ряда на два ряда.

pr_compareFunction больше, чем.

dateRegEx.test (a) возвращает false, поскольку строка a содержит ошибки.

Тестирование в консоли ie8 говорит мне, что

globalA.toLowerCase() == "sep 2010"

возвращает ложь В этом случаеalert(globalA) показал "сентябрь 2010" иalert(globalLeft) показал "сентябрь 2010". Я проверил. Длина на обоих, чтобы быть 8, как и ожидалось.

globalLeft1 == globalLeft кажется правдой, но ни один не равен нормальным строкам.

Я вообще не понимаю, почему JScript не может распознать эти две строки. воспроизведение этих точных шагов в консоли работает как положено.

[Дальнейшее редактирование]

Различная реализация javascript обрабатывает символы без пробелов как класс символов пробела или класс символов без пробелов. Является ли это ошибкой или работает как задумано, открыто для обсуждения.

Ответы на вопрос(1)

Ваш ответ на вопрос