Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.03.2016, 21:10
Интересующийся
Отправить личное сообщение для Almag13 Посмотреть профиль Найти все сообщения от Almag13
 
Регистрация: 22.03.2016
Сообщений: 12

Регулярное выражение начинается не с той строки...
Всем привет!

Есть строка

var string = "brendyi-1/acura.html?tv_brand=&tv_model-acura=MDX&tv_year=2008&tv_engine=3.7";


Нужно найти все числа полностью их всего три...

Что не получается и не понимается...

Все числа вывести не проблема
\d+ или \d+?

Но проблема вывести каждое число как оно есть в массив получается длина массива должна равняться трем... У меня получается двум...

Что я делал:
var reSec = /\d?(\d.\d)/g;
var secString = string.match(reSec);


Такой подход не выводит первую цифру... А выводит две остальные...
Ок, пошел другим путем... Явно указал вывести только первую цифру
var reSec = /(^\d{1})/g;

результат получаю null

Хорошо действую другим путем... Указываю одну цифру по иному
простое \d
Итак, рассуждения, мы нашли цифру первую двигаемся дальше перед нами выбор в жадном режиме выбирать или нет
Пусть будет жадный, мы пробегаемся по всей строке и ищем все цифры.
/\d+/g;

Но как мы видим в строке есть цифра с точкой
и ее вывести не получается...
Что не так, пробую и так...

/\d+(\d.\d)/g;
Ответить с цитированием
  #2 (permalink)  
Старый 26.03.2016, 21:01
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Я изобрел 3 способа:
var str = "brendyi-1/acura.html?tv_brand=&tv_model-acura=MDX&tv_year=2008&tv_engine=3.7";
var re = /\d+(?!\/)/g;
var obj = str.match(re);

var re2 = /[^-]{1}\d+/g;
var obj2 = str.match(re2);
for(var n = 0; n < obj2.length; n++){
obj2[n] = obj2[n].slice(1, obj2[n].length+1);}

var re3 = /\d+/g;
var obj3 = str.match(re3);
//не брать 0 элемент

Первый способ - самый эффективный и решает Вашу задачу. Второй способ - немножко корявый, ищет число с первым символом и потом удаляет его в каждом элементе объекта obj2.
Третий способ - ну мне кажется Вы могли воспользоваться этим способом. Выдает 4 числа: "1", "2008", "3" и "7". Тут просто надо не брать 0 элемент в массиве-объекте obj3.
(Можете "+" поставить).
Ответить с цитированием
  #3 (permalink)  
Старый 26.03.2016, 21:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Almag13,
var string = "brendyi-1/acura.html?tv_brand=&tv_model-acura=MDX&tv_year=2008&tv_engine=3.7",
reSec = /\d+(\.\d+)?/g,
secString = string.match(reSec);
alert(secString);
Ответить с цитированием
  #4 (permalink)  
Старый 27.03.2016, 20:48
Интересующийся
Отправить личное сообщение для Almag13 Посмотреть профиль Найти все сообщения от Almag13
 
Регистрация: 22.03.2016
Сообщений: 12

Работает!

Еще есть вопросик...
Та же самая строка нахожу все знаки -_= использую регулярку такого типа

var reSec2 = /[-_=]?/g;
var secString2 = string.match(reSec2);


Как найти например каждое второе подчеркивание?
Будет нежадный поиск, но как отсеять каждый второй или каждый третий?
Ответить с цитированием
  #5 (permalink)  
Старый 27.03.2016, 20:52
Интересующийся
Отправить личное сообщение для Almag13 Посмотреть профиль Найти все сообщения от Almag13
 
Регистрация: 22.03.2016
Сообщений: 12

Когда мы используем такую экспу
{1,3}


Она работает по разному для каждого выражения?
Получается если мы указываем числа
[0-9]{1,3}
- То мы находим числа от 1 до трех
А когда такое выражение
[A-Z]{1,3}
- то три буквы после?
Ответить с цитированием
  #6 (permalink)  
Старый 28.03.2016, 03:51
Интересующийся
Отправить личное сообщение для Almag13 Посмотреть профиль Найти все сообщения от Almag13
 
Регистрация: 22.03.2016
Сообщений: 12

нашел решение хотя не регуляркой... Мы на выходе получаем массив... вот пройдя массив через цикл можем отсечь не нужный выбор )
Ответить с цитированием
  #7 (permalink)  
Старый 28.03.2016, 10:15
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Ставьте мне "+" за работу, а то я всем расскажу, что Алмаг не работает. Кстати, это реклама. Алмаг не лечит человека. Магнитное поле вообще никак не влияет на человеческий организм.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение tata4ka Общие вопросы Javascript 4 15.11.2014 00:56
Регулярное выражение для поиска строк, не заканчивающихся определенной подстрокой. sutok85 Общие вопросы Javascript 7 08.02.2013 00:02
Как написать регулярное выражение для поиска до конца строки isqad88 Общие вопросы Javascript 3 11.02.2012 15:34
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29