Показать сообщение отдельно
  #1 (permalink)  
Старый 30.08.2013, 12:06
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Регулярное выражение и метод test
В продолжении темы.

Для тех кому не охота лезть в ту тему:
Делаем просмотр версий 2-х документов.

Задача отобразить на странице 2 похожие формы, сравнить их содержимое и выделить цветом отличия. Для решения данной задачи, я забрал содержимое форм, разбил текст на массив с помощью:
var re = /([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g;
text1 = text1.replace(re, ' $1').split(' ');

(Спасибо devote за регулярное выражение, в коих я очень слаб).

Все сработало шикарно, и теперь мне надо из измененных массивов склеить обратно строку, так, чтобы перед знаками препинания не было пробелов. То есть просто
text1 = text1.join(' ');

мне не подходит.

Я написал:
function myJoin(arr) {
            var str = "";

            for (var i = 0; i < arr.length; i++) {

                if (/([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g.test($(arr[i]).text()) || (i == 0)) {
                    str = str + arr[i];
                } else {
                    str = str + " " + arr[i];
                }

            }

            return str;
        }

        text1 = myJoin(text1);
        text2 = myJoin(text2);


Но, я столкнулся с проблемой. Вывод с консоли:
//re = /([~!$%^&*()_+|`\-=\\\[\]{};':",\.\/<>?@#])/g
re.test(".")
true
re.test(".")
false
re.test(".")
true
re.test(".")
false
re.test(".")
true
re.test(".")
false


Как одно и то же регулярное выражение одним и тем-же методом выдает то true, то false?
Ответить с цитированием