regulární výraz javascript pro kontrolu IP adres

Mám několik IP adres jako:

  1. 115.42.150.37
  2. 115.42.150.38
  3. 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.