Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Reg, Wyrażenia regularne
atom90
post 22.08.2014, 12:23:32
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 11.06.2014

Ostrzeżenie: (0%)
-----


Mam okno do którego wpisuje punkty x,y w oknie text area
moje pierwsze rozwiazanie wygladalo tak
Sprawdzanie stringa:
var tzmienne = /^[0-9-,. ]$/;
tylko tu poprostu mogłem wpisywać do woli spacje entery co powodowalo pewne problemy

kolejny reg wyglada juz tak
var tzmienne = /^(([-0-9 ]+\.[-0-9]+|[-0-9]+),([-0-9 ]+\.[-0-9]+|[-0-9]+)\s)+([-0-9 ]+\.[-0-9]+|[-0-9]+),([-0-9 ]+\.[-0-9]+|[-0-9]+)$/;

ogolnie prawie dobrze, lecz wtedy musze idealnie wpisywac pary np. 2,0 2,3 4,3 5,5.10

te dane musze zapisac do tablicy 2 wymiarowej ktora ma wygladac np. tak
[[0, 3], [4, 8], [8, 5], [9, 13]]

zapisuje do zapomocą splitów w taki oto sposób

var array = zmienne.split(" ");
for (var x = 0; x < array.length; x++) {
coords.push(array[x].split(","));
coords[x][0] = coords[x][0] * 1
coords[x][1] = coords[x][1] * 1
}

mnoże przez 1 wartości aby mieć inty, ale mniejsza z tym.

Ogolnie przez takie splitowanie musze miec zawsze miedzy x i y przecinek, co akurat jest dla mnie wporzadku a miedzy parami spacje. (1 spacje)
Ale formularz powinien równierz przepuszczac, jak się wpisze wiekszą ilość spacji lub np odzieli się pare enterem. w regu wystarczy dopisać to /s+|/n lecz to spowoduje, że splity wrzucą mi białe znaki do tablicy, a tego nie chce.

Jeśli ktoś jakoś nakieruje będę wdzięczny

Go to the top of the page
+Quote Post
tzm
post 22.08.2014, 12:40:01
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


http://www.w3schools.com/jsref/jsref_trim_string.asp

trim + reg Adasiu oneeyedsmiley02.png
Go to the top of the page
+Quote Post
slash^
post 22.08.2014, 13:05:48
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

Ostrzeżenie: (0%)
-----


A czy wyrazenie nie lepiej zapisac tak:

var str = '124 23,3 5,4 2,2 2,3';
var tab = str.match(/\d,\d/g);
console.log( tab );

Wtedy masz tablice ktora wyglada w tym przypadku tak:
["3,3", "5,4", "2,2", "2,3"]


--------------------
d(^^)b
Go to the top of the page
+Quote Post
atom90
post 22.08.2014, 13:54:02
Post #4





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 11.06.2014

Ostrzeżenie: (0%)
-----


akurat nie moge mieć tak tablica musi byc w takiej postaci jak podalem, ze wzgledu na plugin ktory uzywam do rysowania wykresów. Dane ogolnie powinny byc wpisywane tak ze sa dozwolone spacje i entery a separatorem jest przecinek. ogolnie przyjmuje ze separatorem miedzy parami powinna byc spacja, ale ogolnie powinno byc ze jak wpisze 1,2,3,4,5,6,7,7 to tez zadziała, ale ze splitowaniem nie wiem jak bym miał to odroznić wiec w najgorszym wypadku bym robił separator taki
var array = zmienne.split(", ");

rozwiązaniem mogło by być aby w stringu zamienił wszystkie białe znaki na np jedna spacje lub na przecinek spacje (", ").

probowałem tak
function spacja(x) {
return x.replace('/^\s+|\s+$/g', ' ');
}
zmienne2=spacja(zmienne);

ale nie działa kompletnie.
Edit1
ahh sorki zle doczytałem faktycznie działa wielkie dzieki

Edit2
Jedynie mnie ciekawi jeszcze jakby to zrobić zeby wpisywać tak np dane 2,3,4,5,6,7 lub 2,3, 4,5, 5,6 zeby tez tak to umiejetnie zapisywalo do tablicy

Edit
Jednak wystąpił ważny problem gdy wpisze wartość 4.1 np to wpisze mi do tablicy tylko 1 :/

Ten post edytował atom90 22.08.2014, 13:57:13
Go to the top of the page
+Quote Post
by_ikar
post 22.08.2014, 15:11:00
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Najłatwiej to by było rozbić splitem po przecinku, potem przejechać po takiej tablicy pętlą i sprawdzić każdy wynik pod kątem spacji i rozbić jeszcze raz. O ile dobrze zrozumiałem twoje założenia.
Go to the top of the page
+Quote Post
slash^
post 23.08.2014, 08:51:57
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

Ostrzeżenie: (0%)
-----


Cytat(atom90 @ 22.08.2014, 14:54:02 ) *
Edit2
Jedynie mnie ciekawi jeszcze jakby to zrobić zeby wpisywać tak np dane 2,3,4,5,6,7 lub 2,3, 4,5, 5,6 zeby tez tak to umiejetnie zapisywalo do tablicy

Edit
Jednak wystąpił ważny problem gdy wpisze wartość 4.1 np to wpisze mi do tablicy tylko 1 :/


http://jsfiddle.net/1njwvvjk/
lub:

http://jsfiddle.net/1njwvvjk/1/

Ten post edytował slash^ 23.08.2014, 09:01:53


--------------------
d(^^)b
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.06.2024 - 14:22