@@ -23,6 +23,9 @@ import {
2323 email ,
2424 fourDigitsCode ,
2525 hexadecimal ,
26+ ip ,
27+ ipv4 ,
28+ ipv6 ,
2629 macAddress ,
2730 phone ,
2831 sixDigitsCode ,
@@ -661,4 +664,54 @@ describe('@regex', () => {
661664 expect ( hexadecimal . test ( string ) ) . toBe ( expected )
662665 } )
663666 } )
667+
668+ describe ( 'ipv4' , ( ) => {
669+ test . each ( [
670+ [ '192.168.1.1' , true ] ,
671+ [ '127.0.0.1' , true ] ,
672+ [ '0.0.0.0' , true ] ,
673+ [ '255.255.255.255' , true ] ,
674+ [ '1.2.3.4 hi' , false ] ,
675+ [ '256.256.256.256' , false ] ,
676+ [ '999.999.999.999' , false ] ,
677+ [ '1.2.3' , false ] ,
678+ ] ) ( 'should match regex %s to be %s' , ( string , expected ) => {
679+ expect ( ipv4 . test ( string ) ) . toBe ( expected )
680+ } )
681+ } )
682+
683+ describe ( 'ipv6' , ( ) => {
684+ test . each ( [
685+ [ '1:2:3:4:5:6:7::' , true ] ,
686+ [ '1:2:3:4:5:6::8' , true ] ,
687+ [ '1:2::4:5:6:7:8' , true ] ,
688+ [ '1::3:4:5:6:7:8' , true ] ,
689+ [ '::2:3:4:5:6:7:8' , true ] ,
690+ [ '::1.2.3.4' , true ] ,
691+ [ '1:2::4:5:6:7:8 hi' , false ] ,
692+ [ '192.168.1.1' , false ] ,
693+ [ '127.0.0.1' , false ] ,
694+ [ 'typebot.io' , false ] ,
695+ [ '256.256.256.256' , false ] ,
696+ ] ) ( 'should match regex %s to be %s' , ( string , expected ) => {
697+ expect ( ipv6 . test ( string ) ) . toBe ( expected )
698+ } )
699+ } )
700+
701+ describe ( 'ip' , ( ) => {
702+ test . each ( [
703+ [ '1:2:3:4:5:6:7::' , true ] ,
704+ [ '1:2:3:4:5:6::8' , true ] ,
705+ [ '::2:3:4:5:6:7:8' , true ] ,
706+ [ '::1.2.3.4' , true ] ,
707+ [ '192.168.1.1' , true ] ,
708+ [ '127.0.0.1' , true ] ,
709+ [ '0.0.0.0' , true ] ,
710+ [ '255.255.255.255' , true ] ,
711+ [ '256.256.256.256' , false ] ,
712+ [ '1:2:3::5:6:7:900.2.3.4' , false ] ,
713+ ] ) ( 'should match regex %s to be %s' , ( string , expected ) => {
714+ expect ( ip . test ( string ) ) . toBe ( expected )
715+ } )
716+ } )
664717} )
0 commit comments