Mám několik IP adres jako:
115.42.150.37
115.42.150.38
115.42.150.50
Jaký typ regulárního výrazu bych měl napsat, pokud chci vyhledat všechny 3 IP adresy? Např. když udělám 115.42.150.*
(Budu moci vyhledat všechny 3 IP adresy)
Nyní mohu udělat něco jako:/[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}.[0-9]{1-3}/
ale zdá se, že to nemůže dobře fungovat.
Dík.
Odpověď
Regulární výraz, který máte, již má několik problémů:
Za prvé obsahuje tečky. V regulárním výrazu tečka znamená „shodovat se s libovolným znakem“, kde potřebujete najít shodu pouze se skutečnou tečkou. Chcete-li to provést, musíte jej uniknout, takže před tečky vložte zpětné lomítko.
Za druhé, ale v každé sekci odpovídáte libovolným třem číslicím. To znamená, že budete odpovídat libovolnému číslu mezi 0 a 999, které samozřejmě obsahuje mnoho neplatných čísel IP adres.
To lze vyřešit tím, že srovnávání čísel bude složitější; na tomto webu jsou další odpovědi, které vysvětlují, jak to udělat, ale upřímně řečeno, nestojí to za námahu – podle mého názoru by bylo mnohem lepší rozdělit řetězec na tečky a pak jen ověřit čtyři bloky jako číselné celé číslo rozsahy — tj.:
if(block >= 0 && block <= 255) {....}
Doufám, že to pomůže.