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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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



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

Цитата:
хм, а вот  с такой штукой

ну так вы, когда о чем то пишете, указывайте все возможные варианты.. откуда мы знаем что у вас там вообще есть?  
 

Цитата:
Кстати, еще баг, если после --> поставить пробел

чьей регулярки?
в ссылке на jsfiddle есть два коммента идущие рядом и с пробелом между ними
 
в случае с двойными открывающими.. там либо рекурсия нужна (но js ее не поддерживает), либо не захватывать <!-- внутри  
потом, если будет время, подумаю


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:13 05-05-2013 | Исправлено: Cheery, 09:17 05-05-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как вариант:
 
str.replace(/<!--(?:\s*<!--)*((.(?!-->))*.)(-->)?/g, '$1')

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



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Простой и понятный вариант (в 2 ночи не хочу над регулярками думать)
http://jsfiddle.net/32Xf8/2/
 

Код:
replace(/<!--(.*?(-->))?/g, function($1) {return $1.replace(/(<!--|-->)/g, '');})


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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Эмм.
1. Если не будет закрывающего -->, то в $1 вообще ничего не попадет.
2. Удалятся "внутренние" <!--, т.е. в "<!-- aaa <!-- bbb -->", что скорее всего не соответствует требованиям.
 
Мой вариант выше кажется норм работает.

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



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

Цитата:
Если не будет закрывающего -->, то в $1 вообще ничего не попадет.

а ссылки для тестирования я для кого даю?  
 

Цитата:
Удалятся "внутренние" <!--, т.е. в "<!-- aaa <!-- bbb -->"

ну так это же и хотят, судя по  
 

Цитата:
<!-- <!--  qwerty" некорректно робит, ведь по идеи он должен удалить все знаки комментов, т.е. оставить только qwerty, а он: <!--  qwerty


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

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



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вообще правильность всего этого зависит от конечной цели (получить массив комментариев, очищенный от начальных и конечных тегов, или просто сделать комменты видимыми в коде).

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



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

Цитата:
вообще правильность всего этого зависит от конечной цели (получить массив комментариев, очищенный от начальных и конечных тегов, или просто сделать комменты видимыми в коде).

Массив комментариев, очищенный от нач.и конеч.тегов.
 
В итоге идеально подошел последний вариант Cheery, лишь немного модифицировал, дабы работало с переносами строк:
s.replace(/<!--((.|\n)*?(-->))?/g, function($1) {return $1.replace(/(<!--|-->)/g, '');})
Теперь всё вроде отлично, даже самые извращенные варианты с кучей вложенных комментов и прочего жует на отлично=))
 
Спасибо огромное товарищам Cheery и unreal666 за ваш труд и терпение. Очень помогли
 

Всего записей: 191 | Зарегистр. 21-05-2009 | Отправлено: 11:48 05-05-2013
wwwww



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

Код:
 
<!DOCTYPE HTML>
<html>
 <head>
  <title> New Document </title>
 </head>
 
 <body>
 
<div id="rub0_133165" class="small readed" style="height: 323px;">
 
            
            <h1>
                <a class="view_full" href="/news/133165-tragediya-v-seme-dzheymsa-bonda-pirs-brosnan-poteryal-priemnuyu-doch">Трагедия в семье "Джеймса Бонда": Пирс Броснан потерял приемную дочь</a>  
                <a target="_blank" class="source_news" href="http://http://www.newsru.com">NEWSru.com</a>,  
                сегодня в 10:19            </h1>
 
            <p>41-летняя Шарлотта скончалась от рака яичников - болезни, ранее убившей ее мать и бабушку. Мать Шарлотты, австралийская актриса Кассандра Харрис вышла замуж за Пирса Броснана в 1980 году, имея двоих детей от предыдущего брака - Шарлотту и Кристофера. Вскоре Броснан усыновил детей своей возлюбленной.</p>
        </div>
 
 <script>
 var str=document.getElementById("rub0_133165").innerHTML;
alert('<article>'+str.replace(/<a[^>]*?class="view_full".*?>(.*?)<\/a>/g,'<span>$1</span>').replace(/<a [^>]*?class="source_news".*?>(.*?)<\/a>/,'<span>$1</span>')+'</article>');
  </script>
 </body>
</html>
 

 
А именно: хочу взять то, что внутри тега DIV и вывести на экран заменив ссылки тегом span.  Работает везде, кроме ие 7-8.
 
В чем косяк?
 
 

Всего записей: 323 | Зарегистр. 26-12-2003 | Отправлено: 17:19 02-07-2013 | Исправлено: wwwww, 17:50 02-07-2013
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wwwww
можно было бы заметить, что:
1. alert в IE8/7 выводит теги прописными буквами
2. в class="view_full" и class="source_news" у него нет кавычек.
короче тупые браузеры переформатировали код под себя.
Простейший вариант учесть это:

Код:
alert( '<article>'+ str.replace(/<a [^>]*?class="?(?:view_full|source_news)"?.*?>(.*?)<\/a>/gi, '<span>$1</span>') + '</article>' );

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 18:14 02-07-2013 | Исправлено: unreal666, 18:16 02-07-2013
Cheery



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

Цитата:
А именно: хочу взять то, что внутри тега DIV и вывести на экран заменив ссылки тегом span

не понимаю зачем вам нужны регулярки для этого

Код:
var div = document.getElementById('rub0_133165');
var as = div.getElementsByTagName('a');
while (as.length) {
    var a = as[0], span = document.createElement('span');
    span.innerHTML = a.innerHTML;
    span.className = a.className; // уберите, если не хотите копировать классы
    a.parentNode.replaceChild(span, a);
}


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:05 02-07-2013 | Исправлено: Cheery, 21:06 02-07-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите сделать скрипт, который будет проверять поле <input/>
и выдавать в результате true или false на наличие только элементов A-z и 0-9

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:08 15-05-2014 | Исправлено: Sutar, 00:08 15-05-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar, что значит «помогите»? Я ваших попыток не вижу.
 
myInput.value.search(/[^a-zA-Z0-9]/) == -1

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 00:27 15-05-2014 | Исправлено: ASE_DAG, 00:28 15-05-2014
Sutar



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

Цитата:
Я ваших попыток не вижу.  

Я пытался найти подходящую функцию. Почитай js учебники, но так и не получалось создать...
А за скрипт большое вам спасибо.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:06 15-05-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
на будущее - JavaScript: Проверка значений элементов формы (e-mail, имя..

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:33 17-05-2014
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу никак вырезать из ссылки к файлу путь. То есть в наличии /abc/ddd/xxx.jpg - получить /abc/ddd/

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 22:59 22-05-2014 | Исправлено: xerpal, 23:37 22-05-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal
"/abc/ddd/xxx.jpg".replace(/[^\/]+$/, "")

Всего записей: 6671 | Зарегистр. 14-02-2005 | Отправлено: 04:54 23-05-2014 | Исправлено: unreal666, 04:55 23-05-2014
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
Большое спасибо!

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 08:00 23-05-2014
drrdar

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброго!
 
Надеюсь, написал в ту тему. На самом деле, мне для mod_rewrite .htaccess'ного надо, кривые сцылки переправить, дубли закрыть. Сразу скажу, чтобы тапками не кидали, с регекспами мало знаком, в основном - каюсь - совсем уж простецкими решениями пользуюсь по необходимости, которых в интернете тоннами выложено. Хотя можете и кинуть, чего уж. ))
 
В общем, корявый битрикс выдаёт, как выяснилось, хренову тучу дублей, т.о., сайт ни фига не двигается в поисковиках.
 
Неправильный УРЛ выглядит вот так:  
 
http://examp.le/catalog/detail.php?id=777&section_id=string1&cat=789
 
На самом деле, это дубль, и вместо string1 нужно конкретное число, например, 123. А вместо 777 м.б. любая последовательность из 3-х цифр. Соотв., с этой кривой ссылки нужен редирект на  
 
http://examp.le/catalog/detail.php?id=777&section_id=123&cat=789
 
Почитал, что с помощью QUERY_STRING такое должно парситься. Что-то типа
 
RewriteCond %{QUERY_STRING} ^section_id=(string1)&cat=789$
 
RewriteRule ^catalog/detail.php?id=([0-9]{1,3})& http://examp.le/catalog/detail.php?id=$1&section_id=123&cat=125
 
Естественно, ни фига не работает, ибо тёмный лес вообще.
 
Благодарю за любую помощь!




Название темы внимательно прочитайте. Вам сюда - mod_rewrite: документация, готовые решения, вопросы

Всего записей: 25 | Зарегистр. 06-03-2008 | Отправлено: 11:05 09-09-2014
inVollt

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

Всего записей: 471 | Зарегистр. 01-12-2011 | Отправлено: 17:00 02-11-2014 | Исправлено: inVollt, 17:43 02-11-2014
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почему это работает
Код:
  alert("text here <strong>second text here</strong>".replace(/<strong.*?<\/strong>/g,''))

А это не работает
Код:
alert("text here &lt;strong&gt;second text here&lt;/strong&gt;".replace(/&lt;strong.*?&gt;\/strong&gt;/g,''));

 
Добавлено:
Яваскрипт, задача вырезать все теги из текста(теги уже вот в таком виде, lt-gt).  

Код:
var data = ' &lt;div id="info-links" class="right" &gt; next    &lt;a href="/about"&gt;О сайте &lt;/a &gt;'
    
var vv2 = '/&lt;(.*?)&gt;/g';
             
                 data = data.replace(vv2,'');
                 alert('data2='+data);

 
Не режет теги. Что я делаю не так?  
 
Добавлено:
Или кавычки мешают? Я пытаюсь их убирать - но тогда ошибка...

Всего записей: 1633 | Зарегистр. 08-10-2011 | Отправлено: 09:48 09-03-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 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