Portál AbcLinuxu, 13. května 2025 03:38

Dotaz: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu

6.1.2017 13:22 Rishare2 | skóre: 1
Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Přečteno: 1194×
Odpovědět | Admin
Zdravim,

potreboval bych udelat regularni vyraz, kteremu vyhovi jen IP adresy nelokalnich rozsahu (ale stale validni IP adresy). Tedy neco jako slouceni techto dvou vyrazu dohromady. Vymyslel jsem spoustu ruznych verzi, ale zadna mi nefunguje, jak by mela.

^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)$

Diky moc.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Michal Kubeček)
6.1.2017 14:32 NN
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud je to soucasti nejakeho filtrovani, anti-spoofingu etc. tak se to da vyresit urcite elegantneji, nez vytvarenim takeveho hnusneho regexpu..
11.1.2017 10:08 Rishare2 | skóre: 1
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Je to soucasti JSON schematu pro "pattern".
12.1.2017 12:10 nelson | skóre: 17 | blog: jakesi_cosi
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Souhlas, nemluve o tom, ze tech rozsahu pro vylouceni bude fakt hodne. Krome tech tri notoricky znamych jeste 100.64.0.0/10, 169.254.0.0/16, 127.0.0.0/8, cely multicast, ..
Řešení 2× (archen, Rishare2 (tazatel))
wamba avatar 6.1.2017 16:44 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obecně, když chceme aby jeden výraz platil a druhý ne, se používá (?!ne-vyraz)ano-vyraz. Pokud to chcete vážně takhle nepřehledně, tak ^(?!(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.))(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$.
This would have been so hard to fix when you don't know that there is in fact an easy fix.
11.1.2017 10:32 Rishare2 | skóre: 1
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Ano, dekuji, to je presne to, co jsem hledal.

Bohuzel nevim, jak jinak to zapsat do JSON schematu (ktery nema implementovanu funkci "format"), nez takto:
"address": {
   "type": "array",
   "title": "List of servers in this site and level",
   "default": "Put IP address here",
   "items": {
      "type": "string",
      "title": "IP address of JumpBox",
      "description": "IPv4 address. Local IPs are not accepted.",
      "pattern": "^(?!(192\\.168|10\\.|172\\.1[6789]\\.|172\\.2[0-9]\\.|172\\.3[01]\\.))(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
   }
}
11.1.2017 10:55 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Jednak jak se píše v odkazu ipv4 adresu můžu matchnout trochu kratčeji opakováním v adrese prvních tří čísel s tečkou.
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
a jednak ve vyloučených by možná měl být i link local 169.254.0.0/16
6.1.2017 18:17 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Odpovědět | | Sbalit | Link | Blokovat | Admin
https://duckduckgo.com/?q=reg+exp+ipv4+address a hend první je cookbook.
10.1.2017 14:55 Tomáš
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Odpovědět | | Sbalit | Link | Blokovat | Admin
není trochu krátkozraké v roce 2017 neřešit IPv6?
10.1.2017 20:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
V okamžiku, kdy někdo ke zjištění, zda IPv4 adresa patří do síťového rozsahu, což jsou dvě jednoduché instrukce procesoru, zcela vážně zvažuje matchování složitého regulárního výrazu na její textovou reprezentaci, je otázka, proč neřeší IPv6, celkem podružná.
11.1.2017 10:17 Rishare2 | skóre: 1
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Jedna se o regex, ktery ma overit spravnost uzivatelem zadanych hodnot (JSON schema) a v danem prostredi nemaji byt IPv6 akceptovany. Proto nema smysl je ani resit.

Jedna se o velice konzervativni korporatni prostredi, kde neni vule k pouzivani IPv6 a ja tuto vec neovlivnim. Proto nemaji IPv6 tomuto regularnimu vyrazu vyhovovat.
17.1.2017 13:35 unicode
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
To už jsem zažil - na nějakém zařízení jsem si nemohl nastavit IP adresu podle mého uvážení, protože nějaký chytrák zkopíroval nějaký super-chytrý regex z netu. Tehdy se to naštěstí dalo obejít vypnutím JS.
11.4.2017 11:34 Rishare2 | skóre: 1
Rozbalit Rozbalit vše Re: Regularni vyraz pro IP adresu s vyloucenim lokalnich rozsahu
Z principu veci nesmi byt tato IP adresa zadavana uzivatelem lokalni. V pripade nestandardni adresy (ci cehokoliv jineho) lze vyuzit jiny firemni proces pro zadani udaju primo do databaze a neobtezovat se front endem.

Formular budou vyplnovat "technici" z Indie..... Musim jeste dale vysvetlovat, proc jsem se snazil udelat onen formluar co nejvice blbuvzdorny?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.