Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
oepd
Witam.
Bardzo prosze o pomoc.
Mam następujący problem w java script:

Na stronie znajduje się 10 <input type=hidden>, każdy z nich zawiera następujący ciąg znaków: rok/numer/

Chcę zrobić pentelke którą przelece wszystkie inputy wykrywając czy któryś z nich nie zawiera ciągu 2010/206/

Problem polega na tym że nie potrafie zarówno napisać jak i znaleźć przykładu do takiego wyrażenia ze znakiem /


Wyrazenie w stylu:
var ciag=/2010/206/gi;
if (ciag.test(ducument.getElementById("dana").value)) alert('znaleziono');

nie dziala

Probowałem już an milion sposobów, z nawiasami backslashami ale bez sukcesu

Pozdrawiam serdecznie
darko
Powinieneś wyeskejpować znak / Coś takiego u mnie działa:
  1. <input type="hidden" name="h1" id="h1" value="2010/206/" />
  2. <input type="hidden" name="h2" id="h2" value="2010/205/" />
  3. <input type="hidden" name="h3" id="h3" value="2010/204/" />
  4. </form>
  5. <script type="text/javascript">
  6. var pattern = new String('/2010\/205\//');
  7. var ids = new Array('h1', 'h2', 'h3');
  8. for(var i in ids)
  9. {
  10. if(pattern.match(document.getElementById(ids[i]).value))
  11. {
  12. alert('pasuje w ' + ids[i]);
  13. }
  14. }
  15. </body>
  16. </html>
oepd
Dziekuję.
Rozwiązanie jest prawie idealne, aczkolwiek jeśli w hiddenie pojawi sie cos takiego jak rok/numer/dowolnyciag to mi go nie znajdzie pomimo że rok/numer/ sie zgadza.
  1. var pattern = new String('/2010\/205\//');
  2.  



probowalem cos takiego:

  1. var pattern = new String('/2010\/205\/.*/');
  2.  

.* - miało oznaczać dowolny ciąg znaków za rok/numer/ ale nie dziala

przez search() też nie poszło

Zawsze będzie rok/numer/ciąg

gdzie ciąg to trzy literowy napis w stylu (NGL,NZA,NUP,NRY)

Przykład:
1. 2010/206/NGL
2. 2010/208/NZA
3. 2010/206/NUP
4. 2010/521/NAZ

Przy zapisie :
  1. var pattern = new String('/2010\/206\/[a-zA-Z]{3}/');

chciałbym znaleźć pozycję 1 i 3 bo szukam "2010/206/"

Proszę o pomoc
mls
Nie wiem jakim cudem rozwiązanie @Darko miałoby działać. Naprawdę, nie wiem, bo kod jest bez sensu...
[JAVASCRIPT] pobierz, plaintext
  1. var pattern = /2010\/206\/[a-z]{3}/i;
  2. var input = ['2010/206/NGL', '2010/208/NZA', '2010/206/NUP', '2010/521/NAZ'];
  3. var output = [];
  4. for (var i in input)
  5. if (input[i].match(pattern))
  6. output.push(input[i]);
  7. alert(output);
[JAVASCRIPT] pobierz, plaintext
oepd
Faktycznie u @Darko zamieniony byl input z pattern przy match().
Poniższy zapis tez dziala.

[JAVASCRIPT] pobierz, plaintext
  1. var pattern = '2010/206/';
  2. var input = ['dd2010/206/NAL', 'dd2010/2060/NZA', 'dd2010/206/NUP', 'dd2010/521/NAZ'];
  3. var output = [];
  4. for (var i in input)
  5. if (input[i].match(pattern)) output.push(input[i]);
  6.  
  7. alert(output);
[JAVASCRIPT] pobierz, plaintext


serdecznie dziekuje i pozdrawiam rolleyes.gif
darko
Faktycznie, przepraszam za zamieszanie i dziękuję za zwrócenie uwagi. Człowiek uczy się całe życie.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.