IsNetwork
Released in v1.8.0
This validator is a generic validator for checking if the string respects a case.
How to use it
The validator takes a list of NetworkValidatorType and a boolean as argument.
The list can contain one or more of the following values:
IPV4
- IPV4- Check if the string is a valid IPV4 address (Ex: 192.168.0.1).
- IPV4WithCIDR- Check if the string is a valid IPV4 address with CIDR (Ex: 192.168.0.0/24).
- IPV4WithNetmask- Check if the string is a valid IPV4 address with netmask (Ex: 192.168.0.0/255.255.255.0).
- IPV4Range- Check if the string is a valid IPV4 address range (Ex: 192.168.0.1-192.168.0.10).
- RFC1918- Check if the string is a valid RFC1918 address.
TCP/UDP
- TCPUDPPort- Check if the string is a valid TCP/UDP port (Ex:- 8080).
- TCPUDPPortRange- Check if the string is a valid TCP/UDP port range (Ex:- 8080-8090).
The boolean is used to define if the value must be at least one of the network types.
Example OR
The following example will check if the string is a valid IPV4 address with CIDR or a valid IPV4 address with netmask.
// Schema defines the schema for the resource.
func (r *xResource) Schema(ctx context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) {
    resp.Schema = schema.Schema{
        (...)
            "ip_address": schema.StringAttribute{
                Optional:            true,
                MarkdownDescription: "IPV4 for ...",
                Validators: []validator.String{
                    fstringvalidator.IsNetwork([]fstringvalidator.NetworkValidatorType{
                        fstringvalidator.IPV4WithCIDR,
                        fstringvalidator.IPV4WithNetmask,
                    }, true)
                },
            },
Example AND
The following example will check if the string is a valid IPV4 and a valid RFC1918 address.
// Schema defines the schema for the resource.
func (r *xResource) Schema(ctx context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) {
    resp.Schema = schema.Schema{
        (...)
            "ip_address": schema.StringAttribute{
                Optional:            true,
                MarkdownDescription: "IPV4 for ...",
                Validators: []validator.String{
                    fstringvalidator.IsNetwork([]fstringvalidator.NetworkValidatorType{
                        fstringvalidator.IPV4,
                        fstringvalidator.RFC1918,
                    }, false)
                },
            },