Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » javascript регулярные выражения

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6

Открыть новую тему     Написать ответ в эту тему

just aero



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе <localtime> всем.
 
Подскажите решение распостраненной (казалось бы) задачи:
 
1. Разделить ай пи адрес 192.168.0.0 на четыре числа.
2. Разделить диапазон 1-5 на два числа.
 
Заранее спасибо.
 
Пока получилось только проверка валидности введенного адреса:

Код:
var re = /^([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/;
var str1 = ipinput.value;
var result = re.test(str1) ? "правильно" : "неправильно";

 


 
Разобрался. Решение как всегда оказалось простым =)

Код:
var re = /\d+/g;
var str1 = ipinput.value;
var str2 = str1.match(re);
var result = str2[0]+" - "+str2[1]+" - "+str2[2]+" - "+str2[3];

Модератор, закрывай тему, а меня бань за флуд =)

Протестировать свое регулярное выражение можно в онлайне тут JRX

Всего записей: 13 | Зарегистр. 25-04-2007 | Отправлено: 07:23 30-07-2008 | Исправлено: Cheery, 23:40 16-01-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686

Цитата:
/.*TutTekstEst.*/gi

 
/.*TutTekstEst.*/sgi

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:06 06-10-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
 
 

Цитата:
/.*TutTekstEst.*/sgi

 
Неа, не катит Выдает ошибку
 
Добавлено:

Цитата:
Cheery  
 
 
 
Цитата:
/.*TutTekstEst.*/sgi
 
 
Неа, не катит  Выдает ошибку

 
разобрался
 
/[\s\S]*Ждановичи[\s\S]*/gi

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 20:19 06-10-2012 | Исправлено: Spy686, 20:20 06-10-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686

Цитата:
Выдает ошибку

какую?? скорее вы что то не так сделали - s модификатор говорит о том, что нужно считать все одной строкой (по умолчанию . не учитывает перенос строки, а /s это исправляет)

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:26 06-10-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
незнаю, такого не нашел тут:
 
http://javascript.ru/RegExp
 
Добавлено:
а как использовать переменную в регулярке ?
 

Код:
ip=ipat.replace(/[\s\S]*$word[\s\S]*/gi,"TutTekstEst");

 
так не получаеться

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 20:29 06-10-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686
а, значит напутал, взял из другого языка. немудрено, когда пишешь на нескольких языках одновременно
в принципе можно написать как [.\r\n]* к примеру
 

Цитата:
а как использовать переменную в регулярке ?  

какую переменную, откуда взята?  
 

Цитата:
так не получаеться  

не (что делает?) получается
 
нет там никакого мягкого знака

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:33 06-10-2012 | Исправлено: Cheery, 20:34 06-10-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
 
да грматика неважна тут
 
она важна тут:
 

Код:
 
 
 
var word=prompt('Введите Искомое слово', '');
 
ip=ipat.replace(/[\s\S]*СЮДА НАДО ПЕРЕМЕННУЮ word[\s\S]*/gi,"TutTekstEst");
 
 
 

 

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 20:47 06-10-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686

Цитата:
да грматика неважна тут

еще как важна
 

Цитата:
/[\s\S]*СЮДА НАДО ПЕРЕМЕННУЮ word[\s\S]*/gi

var rg = new RegExp("[\s\S]*" + word + "[\s\S]*", "gi");
но надо использовать блок try при использовании такой регулярки, либо производить санацию переменной word, иначе если введут неправильно новые элементы регулярного выражения, то это выдаст ошибку

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:51 06-10-2012
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686
> а как использовать переменную в регулярке?
>>> var myword = 'ipsum';
>>> var myRegExp = new RegExp('[\\s\\S]*' + myword + '[\\s\\S]*', 'gi');

— это вы имели в виду?  
 
N. B. Раскрывается переменная в момент создания регэкспа.
 
Добавлено:
Cheery
> var rg = new RegExp("[\s\S]*" + word + "[\s\S]*", "gi");
 
>>> var word = 'ipsum';
undefined
>>> var rg = new RegExp("[\s\S]*" + word + "[\s\S]*", "gi");
undefined
>>> rg
RegExp /[sS]*ipsum[sS]*/ig

 
Бэкслэши надо экранировать, см. выше.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:52 06-10-2012 | Исправлено: ASE_DAG, 21:00 06-10-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Spy686  
> а как использовать переменную в регулярке?  
>>> var myword = 'ipsum';  
>>> var myRegExp = new RegExp('[\\s\\S]*' + myword + '[\\s\\S]*', 'gi');  
— это вы имели в виду?  
 
N. B. Раскрывается переменная в момент создания регэкспа.

 
да, но у меня почемуто не получаеться
 
что не так:
 

Код:
 
 
 
var word=prompt('Введите Искомое слово', '');
 
ip=ipat.replace(/'[\\s\\S]*' + word + '[\\s\\S]*'/gi,"TutTekstEst");
 
 

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 21:02 06-10-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Spy686

Цитата:
да, но у меня почемуто не получаеться

потому что не читаете внимательно - там другая конструкция, с использование объекта RegExp
после чего  
ip = ipat.replace(rg, "TutTekstEst");  
 
и, опять же, не забывайте санировать переменную word
например подобной функцией
 
RegExp.escape = function(text) {
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
 
тогда регулярку нужно создавать как
 
var rg = new RegExp('[\\s\\S]*' + RegExp.escape(word) + '[\\s\\S]*', 'gi');
 
ps: опять же - не проверял, говорю смысл
 
pps:
Цитата:
не получаеться

и выучите же правила, а то у меня начинает возникать ощущение, что намеренно так делаете.
просмотрите ссылку в моей подписи
 
ASE_DAG

Цитата:
Бэкслэши надо экранировать, см. выше.

сорри, пишу по памяти. если бы не заработало, то тогда бы уже воспроизвел

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:08 06-10-2012 | Исправлено: Cheery, 21:17 06-10-2012
Spy686



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Блин мужики, большое спасибо, ПОЛУЧИЛОСЬ !!!!!!!
 
var word=prompt('Введите Искомое слово', '');
var myRegExp = new RegExp('[\\s\\S]*' + word + '[\\s\\S]*', 'gi');
ip=ipat.replace(myRegExp,"TutTekstEst");

Всего записей: 193 | Зарегистр. 17-12-2010 | Отправлено: 21:17 06-10-2012
Holfisteng

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста, найти ошибку в следующем регулярном выражении:

Код:
var r = /^((((ht|f)tp(s?))\://)|(/{1}))?((([a-zA-Z0-9_\-]{2,}\.)+[a-zA-Z]{2,})|((?:(?:25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)(?(\.?\d)\.)){4}))(:[a-zA-Z0-9]+)?(/[a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~]*)?$/;

Пробовал экранировать "//" с помощью "\/\/", не помогло.
 
Заранее спасибо за ответ!

Всего записей: 3 | Зарегистр. 11-12-2012 | Отправлено: 19:43 11-12-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Holfisteng

Цитата:
Пробовал экранировать "//" с помощью "\/\/", не помогло.  

ну так надо экранировать не только двойные, но и одиночные..
потому что вторым же / вы закрываете регулярное выражение (оно начинается с /)
 
и сначала объясните, что вы хотите сделать регулярным выражением - может его можно записать в более простом виде.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:48 11-12-2012
Holfisteng

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это регулярка, которая валидирует URL. В более простом виде едва ли можно записать. Здесь нашёл решение своей проблемы.

Всего записей: 3 | Зарегистр. 11-12-2012 | Отправлено: 20:11 11-12-2012
MoLnuS



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
*пришел из темы Вопросы по JS*
 
Излагаю всё задание полностью, а не часть, как в той теме.
 
Мне нужно удалить знаки HTML-комментариев, оставив только само тело коммента.
 
К примеру:
исходное: <!-- asdfgh --> итог: " asdfgh " (со всеми пробелами, без кавычек конечно).
исх: <!-- qwerty итог: " qwerty"
исх:  <!-- asdfgh --> --> итог: " asdfgh -->"
Надеюсь, теперь само задание понятно) Извиняюсь, что вновь сразу высказал не всё. Думал, вопросов не возникнет, т.к. была непонятна только одна часть))
 
Замены всего коммента на тело пока касаться не буду, для начала мне нужно корректно распознать сам коммент (вместе со знаками).
регулярка выходит примерно такая:
/(<!--)+(непонятное_мне)(-->)?/g
где непонятное_мне - любой набор символов, НЕ включающий последовательность -->(закр.коммент).
т.е. чтобы второй закрывающий коммент(не имеющий перед собой <!--) он не считал за коммент, т.к. коммент то уже закрылся%)))
 
непонятное_мне пробовал делать так: ([^-][^-][^>])* , так: [^(-->)]* в этих случаях он не считает -->  за последовательность, а думает, что это набор (т.е. если встретится просто - , то уже не совпадение).Во втором случае скобки считает за символы.
Был предложен еще вот такой вариант: (?!\(-->\)).+  Но я так и не сумел его нормально впихать туда(((
Т.е. в итоге мне достаточно подсказать работающую часть регулярки, задающую  любую последовательность символов НЕ включающих В себя -->.
 
Добавлено:
В таком варианте он захватывает лишние -->
/(<!--)+.(?!-->).+(-->)?/g
Например: исх: <!-- qw>erty --> --> --> найденное: <!-- qw>erty --> --> --> (тоже самое).

Всего записей: 191 | Зарегистр. 21-05-2009 | Отправлено: 20:09 04-05-2013 | Исправлено: MoLnuS, 20:12 04-05-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 20:32 04-05-2013 | Исправлено: unreal666, 00:29 05-05-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MoLnuS
http://jsfiddle.net/32Xf8/
 
str.replace(/<!--((.(?!-->))+.)(-->)?/g, '$1')

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:42 04-05-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
тогда наверно

Код:
str.replace(/<!--((.(?!-->))*.)(-->)?/g, '$1')

а то с одним символом не сработает.

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 00:32 05-05-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666

Цитата:
а то с одним символом не сработает.

ну да.. а то я побыстрому написал..

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:49 05-05-2013
MoLnuS



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Cheery
тогда наверно
 
Код:
str.replace(/<!--((.(?!-->))*.)(-->)?/g, '$1')
 
а то с одним символом не сработает.

хм, а вот  с такой штукой:
"<!-- <!--  qwerty" некорректно робит, ведь по идеи он должен удалить все знаки комментов, т.е. оставить только qwerty, а он: <!--  qwerty .
 
Сделал вот так:
s.replace(/(<!--)+((\s|\S(?!-->))*\s|\S)(-->)?/g, '$2');
там любой символ вместо ., дабы и с переносом строки робило. так работает, но только в случае, если между несколькими <!-- нет ничего, в т.ч. и пробела. Теперь надо как-то исправить это + учесть этот самый символ\пробел между <!--, чтобы так работало:
<!--as <!-- qwer --> итог:as  qwer.
 
Кстати, еще баг, если после --> поставить пробел, то --> не убирается в итоге=(( Если без пробела что-то написать (-->sd), то все ок..

Всего записей: 191 | Зарегистр. 21-05-2009 | Отправлено: 08:52 05-05-2013 | Исправлено: MoLnuS, 08:56 05-05-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6

Компьютерный форум Ru.Board » Интернет » Web-программирование » javascript регулярные выражения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru