В продолжении
темы.
Для тех кому не охота лезть в ту тему:
Делаем просмотр версий 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?