Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с regExp. exec() выдаёт 1 элемент 
:(
    Опции темы
Innuendo
Дата 25.8.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



Код в студию:
Да, не удивляйтесь, там регулярные выражения - маски матерных слов =) 
Так как для написания в Мозилле нельзя в исходнике использовать кириллицу, я писал в Уникоде, и переводил в кирриллицу (это уже работает, так как она хранится в переменной, а не ведена мной вручную в исходнике)
Код

//массив выражений с матами и т.д
var badwordsTR = new Array(/(^|\s|za|po|na)(e|i)ba?/gi, /(x|h)u(y|j|i|e)/gi,
                            /p(e|i)zd/gi, /su(k|4|ch)/gi, /(^|\s)blea/gi);
var badwordsRU = new Array(
       /(^|\s|&#1079 ;&#1072 ;|&#1085 ;&#1072 ;|&#1087 ;&#1086 ;)(&#1080 ;|&#1077 ;|&#1103 ;|&#1105 ;)&#1073 ;&#1072 ;?/gi,
                        /&#1093 ;&#1091 ;(&#1080 ;|&#1081 ;|&#1077 ;|&#1103 ;|&#1105 ;)/gi, /&#1073 ;&#1083 ;&#1103 ;/gi, 
                        /&#1089 ;&#1091 ;(&#1095 ;|&#1082 ;|4)/gi, /&#1087 ;(&#1080 ;|&#1077 ;)&#1079 ;&#1076 ;/gi);
var spamwordsTR =  new Array(/\@/gi, /(http|ftp)(s)?:\/\//gi, /www/, /email/gi, /icq/gi);
var spamwordRU = /(&#1077 ;|&#1080 ;)\s*(-)?\s*&#1084 ;(&#1101 ;|&#1077 ;)(&#1081 ;|&#1080 ;)&#1083 ;/gi;
var numbers = /[0-9]{3}\S(\s*-?[0-9]*)+/gi;
//cтили
var lightStyles = new Array();;
lightStyles['bad'] = "background-color:red; color:yellow; padding:1px;";
lightStyles['spam'] = "background-color:blue; color:red; padding:1px;";
lightStyles['numbers'] = "background-color:green; color:orange; padding:1px;";

// =сумма массивов=//
function arraysumm(ar1,ar2){
var l1 = ar1.length;
var l2 = ar2.length;
for (var i=0; i<l2; i++){
 ar1[l1+i] = ar2[i];
}
return ar1;
}

//найти ТДшки с классом
function getElementsByClassName2(classname)
{
//их се загоняем в массив
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = window._content.document.getElementsByTagName("td");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

//находим и подсвечиваем
function findTrash(){
//Данные анкеты
var tdo = getElementsByClassName2("co");
var tdn = getElementsByClassName2("cn");
var tds = arraysumm(tdo,tdn);
var j,i;
for (j=0; j<tds.length; j++){
//Маты на транслите
for (i=0; i<badwordsTR.length; i++){
tds[j].innerHTML=tds[j].innerHTML.replace(badwordsTR[i],(function(x) {return '<span style="'+lightStyles["bad"]+'">' + x + '</span>'}))
}
//маты на русском
for (i=0; i<badwordsRU.length; i++){
var badword = new XML ("<text>" + badwordsRU[i] + "</text>");
                                      badword = badword.toString();                                  
tds[j].innerHTML=tds[j].innerHTML.replace(eval(badword),(function(x) {return '<span style="'+lightStyles["bad"]+'">'+ x + '</span>'}));
}
//мыла и адреса на транслите
for (i=0; i<spamwordsTR.length; i++){
tds[j].innerHTML=tds[j].innerHTML.replace(spamwordsTR[i],(function(x) {return '<span style="'+lightStyles["spam"]+'">'+x+'</span>'}));
}
// мыло на русском
var spamword = new XML("<text>"+spamwordRU+"</text>");
                            spamword = spamword.toString();
tds[j].innerHTML=tds[j].innerHTML.replace(eval(spamword),(function(x) {return '<span style="'+lightStyles["spam"]+'">'+x+'</span>'}));

tds[j].innerHTML=tds[j].innerHTML.replace(numbers,(function(x){return'<span style="'+lightStyles["numbers"]+'">'+x+'</span>'}));
}

}

В уникоде перед двоеточием я специально поставил пробелы, чтоб они тут не преобразовались в символы =)

Это сообщение отредактировал(а) Innuendo - 25.8.2006, 19:24


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Innuendo
Дата 26.8.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



так мне и не помогут?  =)


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.