Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   вопрос по регуляркам (https://javascript.ru/forum/dom-window/34916-vopros-po-regulyarkam.html)

JustCrazy 24.01.2013 06:07

вопрос по регуляркам
 
Здравствуйте.
Начал потихоньку осваивать регэксы.
Есть у меня массив (234,357,3,6,96), хочу вытянуть из него последнюю цифру. Сделал:
/\(\d*,\d*,\d*,\d*,(\d*)\)/
в принципе меня устраивает, работает, но хочется углубиться. По факту массив может быть не из 5, а допустим из 20-30 цифр, не хочется нагромождения.
Подскажите пожалуйста как рациональнее заменить?
попробовал так:
/\([\d*,]{4}?(\d*)\)/
но что-то не то..

рони 24.01.2013 09:03

JustCrazy,
alert("(234,357,3,6,96)".replace(/\(.+,(\d+)\)$/,"$1"));

ksa 24.01.2013 09:16

Цитата:

Сообщение от JustCrazy
Есть у меня массив (234,357,3,6,96)

С массивом лучше работать как с массивом. :)

Цитата:

Сообщение от JustCrazy
хочу вытянуть из него последнюю цифру. Сделал:
/\(\d*,\d*,\d*,\d*,(\d*)\)/
в принципе меня устраивает, работает

Не пойму что тебя там устраивает... :blink:

var s='(234,357,3,6,96)';
var r=/\(\d*,\d*,\d*,\d*,(\d*)\)/;
alert(s.replace(r,''))
alert(s.search(r))


Показывает пусто и ноль... :)

JustCrazy 24.01.2013 09:30

Цитата:

Сообщение от ksa
Не пойму что тебя там устраивает...
Показывает пусто и ноль...

у меня php код, все работает, как часы :)
Цитата:

Сообщение от ksa
С массивом лучше работать как с массивом.

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

Сообщение от рони (Сообщение 229096)
JustCrazy,
alert("(234,357,3,6,96)".replace(/\(.+,(\d+)\)$/,"$1"));

вот это хорошо, но как быть, если мне надо вытянуть какое то промежуточное значение, например 3е, или 4е, или 27е.. и т.д. ? извиняюсь, изначально немного неправильно вопрос поставил.
есть что нибудь объединяющее пару символов повторяющихся ?

ksa 24.01.2013 09:42

Цитата:

Сообщение от JustCrazy
у меня php код, все работает, как часы

Покажи как используешь

JustCrazy 24.01.2013 09:49

Цитата:

Сообщение от ksa
Покажи как используешь

$url='...';
$data = file_get_contents($url);
if (preg_match("/new\sstats\(\d*,\d*,\d*,\d*,\d*,\d*,\d*,\d*,\d*,(\d*),\d*,\d*,(\d*),\d*,\d*,\d*,\d*\)/i",$data,$lists))
	{ echo $list[1].$list[2]; } else { echo 'cant found'; }

ksa 24.01.2013 09:50

JustCrazy, применительно к JS. :D

JustCrazy 24.01.2013 09:54

Цитата:

Сообщение от ksa
JustCrazy, применительно к JS.

если бы я еще знал JS.. имеются только поверхностные знания...

все же регулярки они и в африке регулярки.. и вопрос по упрощению остается открытым)

ksa 24.01.2013 09:58

Цитата:

Сообщение от JustCrazy
если мне надо вытянуть какое то промежуточное значение, например 3е

Как вариант... :)

var s='(234,357,3,6,96)';
var i=3;
s=s.substring(1,s.length-1);
alert(s.split(',')[3])

ksa 24.01.2013 10:02

Цитата:

Сообщение от JustCrazy
если бы я еще знал JS.. имеются только поверхностные знания...

Во как будет на JS :)

var s='(234,357,3,6,96)';
var r=/\(\d*,\d*,\d*,\d*,(\d*)\)/;
alert(s.replace(r,'$1'))


Часовой пояс GMT +3, время: 20:13.