Această pagină este protejată de mișcare
Această pagină este protejată

Formular: validator IP

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Formular pentru a verifica dacă un șir dat reprezintă o adresă IP validă. Este șablonul corespunzător Șablon: IP? .

Funcțiile disponibile sunt is_ipv4 , is_ipv6 și is_ip fi utilizate pentru a valida, respectiv, în conformitate cu IPv4 , IPv6 sau unul dintre cele două standarde. Nu există validarea adresei mapate IPv4 și nici a adresei compatibile cu IPv4 .

Iată câteva exemple de utilizare:

Funcţie Șir de analizat Cod de utilizat Rezultat
is_ipv4 0.0.0.0 {{#invoke: validator IP | is_ipv4 | 0.0.0.0}} 1
93.2.50.255 {{#invoke: IP validator | is_ipv4 | 93.2.50.255}} 1
93.2.50.256 {{#invoke: IP validator | is_ipv4 | 93.2.50.256}}
93.2.50 {{#invoke: validator IP | is_ipv4 | 93.2.50}}
A.2.50.255 {{#invoke: validator IP | is_ipv4 | A.2.50.255}}
is_ipv6 2001: 13: A1B: 90F: 512: FFFF: 88: AF3 {{#invoke: IP validator | is_ipv6 | 2001: 13: A1B: 90F: 512: FFFF: 88: AF3}} 1
4: 4: 4: 4: 4: 4: 4: 4 {{#invoke: IP validator | is_ipv6 | 4: 4: 4: 4: 4: 4: 4: 4}} 1
2001: 13: A1B :: FFFF: AF3 {{#invoke: IP validator | is_ipv6 | 2001: 13: A1B :: FFFF: AF3}} 1
2001: 13: A1B: 90F :: FFFF: 88: AF3 {{#invoke: IP validator | is_ipv6 | 2001: 13: A1B: 90F :: FFFF: 88: AF3}}
2001 :: 90F :: FFFF: 88: AF3 {{#invoke: IP validator | is_ipv6 | 2001 :: 90F :: FFFF: 88: AF3}}
2001: 13: A1B: 90F: 512: FFFF: 88 {{#invoke: IP validator | is_ipv6 | 2001: 13: A1B: 90F: 512: FFFF: 88}}
2001.13.A1B.90F.512.FFFF.88.AF3 {{#invoke: IP validator | is_ipv6 | 2001.13.A1B.90F.512.FFFF.88.AF3}}
is_ip 1.2.3.4 {{#invoke: validator IP | is_ip | 1.2.3.4}} 1
2001: 13: A1B: 90F: 512: FFFF: 88: AF3 {{#invoke: IP validator | is_ip | 2001: 13: A1B: 90F: 512: FFFF: 88: AF3}} 1
4: 4: 4: 4 {{#invoke: IP validator | is_ip | 4: 4: 4: 4}}
Test {{#invoke: validator IP | is_ip | test}}

 - [[
* Acest formular este utilizat pentru validarea unei adrese IP.
* Este necesar un algoritm iterativ deoarece expresiile regulate Lua nu sunt suficient de expresive.
]]
local p = {}

- ================================================== ============================
- Funcțiile modulului
- ================================================== ============================

- Această funcție returnează „1” dacă șirul de intrare se potrivește cu standardul IPv4, altfel o valoare nulă.
funcția p . _is_ipv4 ( s )
s = s : gsub ( "/ [0-9] $" , "" ): gsub ( "/ [12] [0-9] $" , "" ): gsub ( "/ [3] [0-2 ] $ " , " " )
    
dacă nu s : găsiți ( „^% d +%.% d +%.% d +%.% d + $” ) atunci
întoarceți zero
Sfârșit
    
pentru substr în s : gmatch ( "(% d +)" ) do
dacă nu substr : găsiți ( "^ [1-9]? [0-9] $" )
și nu substr : find ( "^ 1 [0-9] [0-9] $" )
și nu substr : find ( "^ 2 [0-4] [0-9] $" )
și nu substr : găsiți ( "^ 25 [0-5] $" ) atunci
întoarceți zero
Sfârșit
Sfârșit
    
returnează „1”
Sfârșit

- Această funcție returnează „1” dacă șirul de intrare se potrivește cu standardul IPv6, altfel o valoare nulă.
funcția p . _is_ipv6 ( s )
dacă nu ( s : find ( "^% w +:% w +:% w +:% w +:% w +:% w +:% w +:% w + $" ) - caz în care sunt exact șapte ":"
sau ( s : find ( "^% w *:% w *:% w *:?% w *:?% w *:?% w *:?% w * $" ) - altfel trebuie să fie între cele două si tu esti ":"
și s : găsiți ( "::" ))) - și trebuie să existe sub șirul "::"
sau s : find ( "::. * ::" ) - dar nu pot exista niciodată două șiruri de caractere "::"
sau s : găsiți ( ":::" ) atunci - nici un subșir ":::"
întoarceți zero
Sfârșit
    
pentru substrat în s : gmatch ( "(% w +)" ) do
dacă nu substr : găsiți ( "^ [0-9A-Fa-f] [0-9A-Fa-f]? [0-9A-Fa-f]? [0-9A-Fa-f]? $" ) atunci
întoarceți zero
Sfârșit
Sfârșit
    
returnează „1”
Sfârșit

- Această funcție returnează „1” dacă șirul de intrare se potrivește cu standardul IPv4 sau IPv6, altfel o valoare nulă.
funcția p . _is_ip ( s )
retur p . _is_ipv4 ( s ) sau p . _is_ipv6 ( s )
Sfârșit

- ================================================== ============================
- Funcții șablon
- ================================================== ============================

funcția p . is_ipv4 ( cadru ) return p . _is_ipv4 ( frame . args [ 1 ] sau '' ) end - Utilizare: {{#invoke: IP validator | is_ipv4 | string}}
funcția p . is_ipv6 ( cadru ) return p . _is_ipv6 ( frame . args [ 1 ] sau '' ) end - Utilizare: {{#invoke: IP validator | is_ipv6 | string}}
funcția p . is_ip ( cadru ) return p . _is_ip ( frame . args [ 1 ] sau '' ) end - Utilizare: {{#invoke: IP validator | is_ip | string}}

retur p