![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Witam jak w temacie... mam plik schema.xsd gdzie jedna wartość do walidacji jest określana jako
czy dobrze je rozumiem... \d{0,12} ma to być jakaś liczba o długości od 0 do 12 cyfr, następnie (,{1}\d{2})? może mieć, ale nie musi "," - przecinek i jedną bądź dwie cyfry po nim? Nie do końca wiem co oznacza ten znak zapytania na końcu, ale jeśli dobrze to rozumiem to liczba pobierana z bazy 110544,2 powinna działać bez problemu, a wyrzuca mi błąd!
Gdy nie pojawia się tam liczba z przecinkien to jest ok, ale jest to pole pokazujące kwoty walutowe więc musi być przecinek, bądź kropka do dwóch liczb po przecinku, dodam też, że jest to wzór przysłany z placówki państwowej, to też powinno być dobrze, więc obstawiam, że mój błąd... o co może chodzić? PS jeśli podczas walidacji wyskakuje mi komunikat, o błędzie bo pole jest puste, bo nie musi być wypełnione, ale bład wyskakyje, to czy moge zrobić tak, aby tylko wyskoczył komunikat o tym, ale niech plik się wygeneruje? Warning: DOMDocument::schemaValidate(): Element 'nrReg': [facet 'pattern'] The value '' is not accepted by the pattern '.{9}' Warning: DOMDocument::schemaValidate(): Element 'nrReg': '' is not a valid value of the local atomic type. in...bla bla.. on line 676 np:
Przepraszam za ten dziwny if, ale nie wiem pod jakim slowem kluczem mam czegoś takiego szukać w google ![]() Z góry dziękuję Ten post edytował adek- 29.07.2014, 13:16:15 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Taki wzorzec:
Kod \d{0,12}(,{1}\d{2})? Oznacza dokładnie od 0 do 12 cyfr, po których może (ale nie musi) wystąpić przecinek i dwie cyfry. Nie wiem dlaczego ktoś podkreślił występowanie przecinka w liczbie {1}, to bez sensu. Dziwne też to, że wg takiego wzorca poprawna jest np. wartość ",38". Poprawna będzie też pusta wartość "". |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ten pattern oznacza ze ma być:
- dokładnie od 0 do 12 cyfr - dokładnie 1 przecinek - dokładnie 2 cyfry czyli poprawne jest: Kod ,02 1,00 Nie poprawne Kod 1122222222222,
00,0 22,,00 222 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
SmokAnalog faktycznie, gdy do liczby 110544,2 dodam 0 na końcu 110544,20, bądź jakąkolwiek inną liczbe to działa. Również działa to co opisujesz, czyli ",00" same "0" bądź puste pole. Co najlepsze to generowałem plik z formularza na stronie tej placówki i xml wygenerowany wyrzuca dokładnie taką samą liczbę 110544,2 i im to przechodzi bez błędu... a walidacji wg. schema.xsd od nich nie... burdel na kółkach?
![]() A jak moge jeszcze obsłużyć te warningi, aby wyrzuciło echo, że dane pole jest puste i wygenerowało plik czy tak czy siak, ale żeby dało info o tym?
Jest jakiś warnek na to, albo pod czym mam wyguglować? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tutaj masz do czego ci się dopasowuje twoje wyrażenie: http://www.regexr.com/397ue - skrypt słusznie zwraca nie to co oczekujesz, bo wyrażenie jest niepoprawne.
Dziwne też to, że wg takiego wzorca poprawna jest np. wartość ",38". Poprawna będzie też pusta wartość "". dzieje się tak ponieważ zostało użyte {0,12}, zamiast {1,12} (zakres od 1 do 12 cyfr, a nie jak w pierwszym poście od "niczego" do 12 cyfr). Więc poprawniej wyglądało by to tak: Kod \d{1,12}(,\d{1,2})? http://www.regexr.com/397uh |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Pyton, wprowadzasz kolegę w błąd.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
by_ikar - super stronka! Dziękuję Ci również za pokazanie poprawnego wpisu, faktycznie teraz waliduje tak jak być powinno!
![]() podpowiedzcie jeszcze proszę z tymi warningami i jestem super wdzięczny. edytowane ==== ewentualnie wpadłem na inny pomysł... zmienię walidację w xsd żeby przyjmowało puste pole ![]() Czy będzie poprawnym gdy z ".{11}" przerobię na ".{11}|{^$}" ... Czyli będzie to koniecznie 11 jakichkolwiek znaków (nie 10 i nie 13 tylko równe 11) , lub puste pole, tak? ![]() Ten post edytował adek- 29.07.2014, 15:24:10 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
A może tak:
Kod (\d+(,\d+)?)?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
A może tak: Kod (\d+(,\d+)?)? ale to wyrażenie wpuszcza mi nawet gdy cyfra jest wielkości 1 znaku, bądź nawet 15, ale musi to być cyfra, gdy litera błąd. A bardziej chodziło mi o to że albo 11 cyfr, albo nic, puste pole ![]()
tutaj też trochę nie tak, bo \s to biały znak i przechodzi gdy jest tam liczba 11 cyfrowa, lub spacja ;/ Jak okreslić puste pole, bądź brak danych? Ten post edytował adek- 29.07.2014, 16:00:10 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie jestem w stanie ci pokazać na przykładzie tamtej stronki czy ów wyrażenie złapie brak znaków, dlatego pokażę ci przykład w php:
wynik będzie taki: Kod int 1 int 1 samo wyrażenie wygląda tak: Kod ^$|\d{1,12}(,|\.\d{1,2})? Dodałem dodatkowo możliwość kropki, bo doczytałem twój pierwszy post tym razem do końca. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Smoku wybacz, dopiero teraz zauważyłem ? na końcu patternu ;/
Pogoda juz mnie chyba dobija, 33' w cieniu |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 2 Dołączył: 19.04.2007 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję by_ikar, ale powiedz mi jeszcze jak zrobić by wartość 11 byle jakich znaków
ustawić tak, żeby też przyjmowało 11 znaków bądź puste pole, jedno z dwóch? Bo w tej wersji musi być 11 znaków i nie dopuszcza pola pustego.
\s nie jest rozwiązaniem, bo musiałby tam być znak spacji. Natomiast wyrażenie
nie spełnia się, bo gdy nawet dam sam znak ^$ to gdy mam puste pole to i tak krzyczy że jest źle. Jakie jest wyrażenie zezwalające na puste pole, bo nie mogę znaleźć tego w google? Chyba, że puste pole nie jest wyrażeniem żadnym ![]() Ten post edytował adek- 30.07.2014, 14:46:42 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 115 Pomógł: 8 Dołączył: 8.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Kloc = Kolor
Obama !== Murzyn Obama === Kloc Jak Ci pomogłem to daj Pomógł, tu nie chodzi o te Pomógł, bo to do niczego nie potrzebne, ale daj! :D |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ale wy kombinujecie
![]() Kod (.{11})?
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 2.05.2025 - 06:11 |