Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Wyrażenie regularne i ograniczenie ilości znaków
!*!
post 20.08.2009, 12:08:56
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Kod
function strtolower(str) {var nStr = (str.value+'').replace(/[^a-zA-Z0-9\_]/g, '');str.value = nStr.toLowerCase();}


Chciałbym aby znak "_" był możliwy to powtórzenia tylko raz, tzn. aby nie możnabyło wstawić dwa razy tego samego znaku obok siebie.

próbowałem tak:

Kod
function strtolower(str) {var nStr = (str.value+'').replace(/[^a-zA-Z0-9\_{1}]/g, '');str.value = nStr.toLowerCase();}


Jednak coś za bardzo ten motyw nie załapał.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pawel_W
post 20.08.2009, 12:10:47
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


jak nie można 2 obok siebie to zrób po prostu replace __ na _ winksmiley.jpg i tak pętlą while aż zostanie tylko 1 _
Go to the top of the page
+Quote Post
!*!
post 20.08.2009, 15:20:17
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Ale na pewno można w JS umieścić jakiś ogranicznyk w tym co jest, bez potrzeby pisania koljenej funkcji winksmiley.jpg


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
kamil4u
post 20.08.2009, 15:36:33
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


[JAVASCRIPT] pobierz, plaintext
  1. replace(/[_]{2,}/g, ''); //ew. [\_]
[JAVASCRIPT] pobierz, plaintext
lub

Rozumiem, że dane wprowadzane są np. przez input-a? Można wtedy zamieniać dane zaraz przy ich wpisywaniu - tzn. każdą literkę z osobna - spr. czy ostatnia to przypadkiem nie '_', a jeśli tak to nie pozwalasz wpisać użytkownikowi tego znaku.

Ten post edytował kamil4u 20.08.2009, 15:38:48


--------------------
Go to the top of the page
+Quote Post
golaod
post 20.08.2009, 15:43:36
Post #5





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


A może jakoś tak bo z tego co zrozumiałem to chciałbyś dla każdego znaku tak ?:
Kod
replace( /(.)(?:\1{1,})/g, '$1' );


Nie wiem czy dobrze ale chyba tak tongue.gif

Ten post edytował golaod 20.08.2009, 15:46:44
Go to the top of the page
+Quote Post
zegarek84
post 20.08.2009, 15:54:24
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(Pawel_W @ 20.08.2009, 13:10:47 ) *
jak nie można 2 obok siebie to zrób po prostu replace __ na _ winksmiley.jpg i tak pętlą while aż zostanie tylko 1 _

[to com wcześniej napisałem nie ważne - nie zauważyłem że chciałeś oprócz tych znaków ^^]

spróbuj takiego wyrażenia w pasku adresów - wynik będzie taki jaki chciałeś winksmiley.jpg:
Kod
java script:a='fdass__g_____c'.replace(/(_){2,}|[^a-zA-Z0-9_]/g, '$1');alert(a);void(0)

[EDIT] - JAVASCRIPT MA BYĆ RAZEM - NIE WIEM CZEMU ROZDZIELA ;P

Ten post edytował zegarek84 20.08.2009, 15:59:47


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

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: 14.06.2025 - 18:09