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
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ł.
Go to the top of the page
+Quote Post
Pawel_W
post
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 _ (IMG:style_emoticons/default/winksmiley.jpg) i tak pętlą while aż zostanie tylko 1 _
Go to the top of the page
+Quote Post
!*!
post
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 (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
kamil4u
post
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
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 (IMG:style_emoticons/default/tongue.gif)

Ten post edytował golaod 20.08.2009, 15:46:44
Go to the top of the page
+Quote Post
zegarek84
post
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 _ (IMG:style_emoticons/default/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ś (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 18:44