Регулярные выражения
|
|
pekky | Дата: Понедельник, 06.10.14, 22:19:27 | Сообщение # 1 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Можно ли найти с помощью регулярных выражений список цифр? Проблема в том что я не знаю сколько их может быть например от 1-5 цифр, как написать такое выражение ?
|
|
| |
Apocalypse | Дата: Вторник, 07.10.14, 14:10:28 | Сообщение # 2 |
Подполковник
Группа: Администратор
Сообщений: 107
Награды: 1
Репутация: 11
Статус: Offline
| pekky, если строчка смешанная и в ней буквы и числа, то вот решение:Код <div id="apotext"> Привет, я строчка номер 1 из apo-ucoz.com А я 2 строчка и во мне ещё есть цифра 154 А я третья строчка и в моём слове цифр0бук3ы <br/><br/> </div>
<script> var apotext = $('#apotext').text(); var aporesult = parseInt(apotext.replace(/\D+/g, '')); $('#apotext').after('Результат: ' + aporesult); </script>
Ссылка на демо: http://jsfiddle.net/y8n7waxy/
|
|
| |
pekky | Дата: Вторник, 07.10.14, 15:34:55 | Сообщение # 3 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Apocalypse, Круто!!!! Спасибо большое)))!)!))) Еще вопрос, а как сделать что бы в третей строчке не взялись цифры потому что она смешаная с буквами ?
|
|
| |
pekky | Дата: Вторник, 07.10.14, 15:45:15 | Сообщение # 4 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Apocalypse, Очень странно, когда я пишу этот текст на юкозе то у меня вместо \ пишется вот это только без пробелов(просто тут наоборот оно это привращает в \)
Сообщение отредактировал pekky - Вторник, 07.10.14, 15:46:32 |
|
| |
Apocalypse | Дата: Вторник, 07.10.14, 16:20:20 | Сообщение # 5 |
Подполковник
Группа: Администратор
Сообщений: 107
Награды: 1
Репутация: 11
Статус: Offline
| Цитата pekky Еще вопрос, а как сделать что бы в третей строчке не взялись цифры потому что она смешаная с буквами ? Помести именно то, что тебе нужно, в <div id="apotext"></div>. Третью строчку, соответственно, вынеси за пределы дива
Цитата pekky Очень странно, когда я пишу этот текст на юкозе то у меня вместо \ пишется вот это Не используй визуальный редактор для внесения изменений в html код шаблона
|
|
| |
pekky | Дата: Вторник, 07.10.14, 17:53:35 | Сообщение # 6 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Apocalypse, так я нажимаю панель html кода кнопку
Сообщение отредактировал pekky - Вторник, 07.10.14, 17:54:31 |
|
| |
pekky | Дата: Вторник, 07.10.14, 18:37:12 | Сообщение # 7 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Apocalypse, галимый юкоз не как не получается!!! скрипт не работает потому что оно пишет заместь \ какуето ерунду !!!!!!!!
|
|
| |
pekky | Дата: Вторник, 07.10.14, 18:41:30 | Сообщение # 8 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Apocalypse, Я часто заметил что я пишу в html редакторе а оно сохраняет немного по другому
|
|
| |
Al-Sher | Дата: Вторник, 07.10.14, 19:02:42 | Сообщение # 9 |
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
| pekky, создай файлик для JS скриптов и пиши в нём) там уж точно ничего не изменится)
|
|
| |
pekky | Дата: Вторник, 07.10.14, 19:05:03 | Сообщение # 10 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Al-Sher, точно ! =) Apocalypse, вот например мне Lisnes написал скрипт который с помощью цикла вносит все найденые фрагменты в масив. Только у него просто поиск текста Код function find(txt, reg){ var m = []; while((myArr = reg.exec(txt)) != null){ m.push(myArr); } return m; }
var a = find('регулярка бла бла бла регулярка', /регулярка/g); $("#vod").html(a.join(', ')) А как мне соеденить твой скрипт в его ? или отредактировать ?
Сообщение отредактировал pekky - Вторник, 07.10.14, 19:05:38 |
|
| |
Al-Sher | Дата: Вторник, 07.10.14, 19:16:31 | Сообщение # 11 |
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
| pekky, самой регуляркой является , так что попробуй так Код <div id="apotext"> Привет, я строчка номер 1 из apo-ucoz.com А я 2 строчка и во мне ещё есть цифра 154 А я третья строчка и в моём слове цифр0бук3ы <br/><br/> </div> <script> function find(txt, reg){ var m = []; while((myArr = reg.exec(txt)) != null){ m.push(myArr); } return m; } var apotext = $('#apotext').text(); var a = find(apotext, /\D+/g); $("#vod").html(a.join(', ')) </script>
|
|
| |
pekky | Дата: Вторник, 07.10.14, 19:49:41 | Сообщение # 12 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Al-Sher, я тоже так думал, но оно почему то пишет весь текст кромк цифр
|
|
| |
Al-Sher | Дата: Вторник, 07.10.14, 20:06:56 | Сообщение # 13 |
Лейтенант
Группа: VIP
Сообщений: 71
Награды: 0
Репутация: 1
Замечания: 0%
Статус: Offline
| pekky, попробуй так Код <div id="apotext"> Привет, я строчка номер 1 из apo-ucoz.com А я 2 строчка и во мне ещё есть цифра 154 А я третья строчка и в моём слове цифр0бук3ы <br/><br/> </div>
<script> var apotext = $('#apotext').text(); var aporesult = parseInt(apotext.replace(/\D+/g, '')); var m = []; for(var i = 0; i<aporesult.length;i++) { var c = i++; m[i] = aporesult.substring(i,c); } </script>
Сообщение отредактировал Al-Sher - Вторник, 07.10.14, 20:07:40 |
|
| |
Арман | Дата: Вторник, 07.10.14, 21:02:38 | Сообщение # 14 |
Лейтенант
Группа: Модератор
Сообщений: 47
Награды: 1
Репутация: 3
Замечания: 0%
Статус: Offline
| pekky, Пишет весь кроме цифр, потому что апо там брал /\D+/g и заменял на "", и получались цифры, то есть он отбрасывал все, кроме цифр (заменял на пустоту).
|
|
| |
pekky | Дата: Среда, 08.10.14, 00:51:57 | Сообщение # 15 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Al-Sher, а как на экран вывести ? оно сохраняет результат в масив m ?
|
|
| |
Арман | Дата: Среда, 08.10.14, 01:02:47 | Сообщение # 16 |
Лейтенант
Группа: Модератор
Сообщений: 47
Награды: 1
Репутация: 3
Замечания: 0%
Статус: Offline
| Al-Sher, Что за непонятный цикл, очень сомневаюсь, что оно будет работать. Это то же самое что
for(var i = 1; i < aporesult.length; i+=2) { m[i] = aporesult.substring(i, i); }
pekky, Если код рабочий, то да, результат в m. Можно просто сделать alert если ты проверить хочешь Я наверно не понял вопрос, но зачем собирать в массив найденные, если они уже в aporesult-е, он уже массив, только int-типа, можно просто убрать Parse, то есть преобразование в int. var aporesult = apotext.replace(/\D+/g, ''); Вот тебе и массив String типа, с цифрами из текста выше.
|
|
| |
pekky | Дата: Среда, 08.10.14, 17:01:30 | Сообщение # 17 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Арман, А как убрать преобразование ?
|
|
| |
pekky | Дата: Среда, 08.10.14, 17:48:06 | Сообщение # 18 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Al-Sher, Этот код не работает(
|
|
| |
pekky | Дата: Среда, 08.10.14, 17:56:36 | Сообщение # 19 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Арман, Ну просто переменая aporesult просто как текст, а мне нужно что бы каждый найденый кусочек добавлялся в масив
|
|
| |
pekky | Дата: Четверг, 09.10.14, 17:47:38 | Сообщение # 20 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Цитата Арман Пишет весь кроме цифр, потому что апо там брал /\D+/g и заменял на "", и получались цифры, то есть он отбрасывал все, кроме цифр (заменял на пустоту). А почему сразу нельзя взять цифры о остальное обросить ?
|
|
| |
Арман | Дата: Пятница, 10.10.14, 00:54:57 | Сообщение # 21 |
Лейтенант
Группа: Модератор
Сообщений: 47
Награды: 1
Репутация: 3
Замечания: 0%
Статус: Offline
| pekky, var aporesult = apotext.replace(/\D+/g, ''); я уже убрал преобразование.
То есть у тебя более одного текстов везде ты хочешь просто собрать все цифры из всех них в один массив. Если я правильно понял то вот. Код <div id="apotext1"> Привет, я строчка номер 1 из apo-ucoz.com </div>
<div id="apotext2"> А я 2 строчка и во мне ещё есть цифра 154 </div>
<div id="apotext3"> А я третья строчка и в моём слове цифр0бук3ы <br/><br/> </div>
<script> var apotext = $('#apotext1').text() + $('#apotext2').text() + $('#apotext3').text(); var aporesult = apotext.replace(/\D+/g, ''); $('#apotext').after('Результат: ' + aporesult); </script>
Цитата pekky А почему сразу нельзя взять цифры о остальное обросить ? Похоже в регулярках нету выражений, которые просто цифры фильтруют, или есть, я не знаю.
Цитата pekky Арман, Ну просто переменая aporesult просто как текст, а мне нужно что бы каждый найденый кусочек добавлялся в масив Какой масив? Для чего? Как цифры или что? Вообще-то текст и есть массив, массив символов. То что написал апо и то, что добавил я, оба будут сохранять в переменной aporesult массив, только в случае с апо (где есть вызов функции parseInt массив int-ов - цифр, а то что у меня массив символов - текст.
|
|
| |
pekky | Дата: Пятница, 10.10.14, 16:18:39 | Сообщение # 22 |
Лейтенант
Группа: Пользователи
Сообщений: 65
Награды: 1
Репутация: 0
Замечания: 0%
Статус: Offline
| Арман, Спасибо ! Это оно :)))
|
|
| |