[JavaScript]Reg, Wyrażenia regularne |
[JavaScript]Reg, Wyrażenia regularne |
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 |
|
|
22.08.2014, 12:40:01
Post
#2
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 58 Dołączył: 17.12.2013 Ostrzeżenie: (10%) |
|
|
|
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
|
|
|
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 |
|
|
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.
|
|
|
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%) |
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
|
|
|
Wersja Lo-Fi | Aktualny czas: 6.06.2024 - 14:22 |