readable validation with python regex and simple logic
When to use is not
Your usage of is not is incorrect. You want to use == when you're testing equality, like when you check if s doesn't equal a '0'. You want to use is not when checking for identity, like when you're ensuring two variables are of the same object.
def is_leading_zeros(s: str) -&gt; bool:
    if s != '0':
        return s[0] != '0'
    return True

Clearer comparisons
Python has a syntax that allows you to do this:
def is_in_bounds(s: str) -&gt; int:
    return 0 &lt;= int(s) &lt;= 255

Type Hints
You should add types hints to your functions, which display what types are accepted and returned from your functions. See above for an example of this.