Самописные функции javascript
24.10.2011 14:34:39В этой статьи я изложу свои велосипедные функции.
1) Функции для очистки кода после редактора, очень нужные, перед выкладыванием немного изменил, в оригинале результат сразу попадает в нужный элемент, ну собственно и строка берется тамже:
function deletetag(tag, str){
var expr = new RegExp('(?:<' + tag + '\\s[^>]*>)|(?:<' + tag + '>)', 'igm');
return str.replace(expr,'');
}
Удаляет все вхождения тега: s = deletetag('span', s); s = deletetag('/span', s);
function deleteattribute(param, str){
var expr = new RegExp('(?:\\s' + param + '\\s?=\\s?"[^"]*["])|(?:\\s' + param + "\\s?=\\s?['][^']*['])", 'igm');
return str.replace(expr,'');
}
Удаляет все вхождения атрибута s = deletetag('style', s);
function deletespace(str){
var expr = new RegExp('\\s{2}', 'igm');
return str.replace(expr,' ');
}
Удаляет лишние пробельные символы и табуляцию, лучше применять с осторожностью
2) Моя версия функции ajax правда не так уж и много там моего кода, статью на эту тему я уже писал поэтому поставлю только ссылку /articles-java_script_programmirovanie-ajax_kotoryj_ya_ispolzuyu.html
3) Транслитирование используется в моей CMS
function translite(s){
r = String(s);
r = r.toLowerCase();
r = r.split(' ').join('_');
r = r.split('-').join('_');
r = r.split('__').join('_');
r = r.split('а').join('a');
r = r.split('б').join('b');
r = r.split('в').join('v');
r = r.split('г').join('g');
r = r.split('д').join('d');
r = r.split('е').join('e');
r = r.split('ё').join('yo');
r = r.split('ж').join('zh');
r = r.split('з').join('z');
r = r.split('и').join('i');
r = r.split('й').join('j');
r = r.split('к').join('k');
r = r.split('л').join('l');
r = r.split('м').join('m');
r = r.split('н').join('n');
r = r.split('о').join('o');
r = r.split('п').join('p');
r = r.split('р').join('r');
r = r.split('с').join('s');
r = r.split('т').join('t');
r = r.split('у').join('u');
r = r.split('ф').join('f');
r = r.split('х').join('h');
r = r.split('ц').join('c');
r = r.split('ч').join('ch');
r = r.split('ш').join('sh');
r = r.split('щ').join('shh');
r = r.split('ъ').join('');
r = r.split('ы').join('y');
r = r.split('ь').join('');
r = r.split('э').join('e');
r = r.split('ю').join('yu');
r = r.split('я').join('ya');
var reg = new RegExp('[^a-z_]' ,'gim')
r = r.replace(reg,'');
return r;
}
4) Проверка даты вида Y-m-d H:i:s
function datetest(str){
result = true;
var reg=/([0-9]{4})-([0-9]{2})-([0-9]{2})\s([0-9]{2}):([0-9]{2}):([0-9]{2})/;
if (str.length==19){
if (reg.test(str)){
var ar = reg.exec(str);
if ((parseInt(ar[2],10)<1)||(parseInt(ar[2],10)>12)){result=false;}
if ((parseInt(ar[3],10)<1)||(parseInt(ar[3],10)>31)){result=false;}
if (parseInt(ar[4],10)>24){result=false;}
if (parseInt(ar[5],10)>60){result=false;}
if (parseInt(ar[6],10)>60){result=false;}
}else{result=false;}
}else{result=false;}
return result;
}
5) Проверка является ли строка числом
function isnum(s){var r = false; reg = new RegExp('[^0-9]', ''); if(!reg.test(s)){r = true;} return r}
6) Функции вырезающие из текста то что не соответствует выбранному типу
function rNoLatin(str){
var reg = new RegExp('[^a-z]', '');
str = str.replace(reg,'');
if (reg.test(str)){ str = rNoLatin(str)} return str;
}
Вырезает все кроме латинских символов в нижнем регистре
function rNoInt(str){
var reg = new RegExp('[^0-9]', '');
str = str.replace(reg,'');
if (reg.test(str)){ str = rNoInt(str)}
return str;
}
Вырезает все символы не являющиеся числами
function rNoFloat(str){
var reg = new RegExp('[^0-9\\.]', '');
str = str.replace(reg,'');
if (reg.test(str)){ str = rNoFloat(str)} return str;
}
вырезает все кроме чисел и точки, но к сожалению пока функция не смотрит где есть точка где ее нет и не определяет количество точек
Вот похоже и все, не так уж и много у меня своих функций в javascript, да и те что есть вовсе не идеальны, но в рамках своих возможностей выполняют поставленную задачу, а если необходимо расширить их возможности, то в этом проблем не возникает, регулярные выражения при работе с текстом рулят, а в javascript работа со строками на первом месте. К слову сказать написание этой статьи побудило доработать функцию translite и уменьшить ее код в двое и попутно ликвидировался один недостаток.
Ну ладно всем пока всем удачи!
Рейтинг $r-- [0] $r++
Показать коментарии (vkontakte.ru)}