diff --git a/homeassistant/components/notify/twilio_call.py b/homeassistant/components/notify/twilio_call.py index 37068d6e220..59da15aeebc 100644 --- a/homeassistant/components/notify/twilio_call.py +++ b/homeassistant/components/notify/twilio_call.py @@ -46,47 +46,47 @@ def is_validurl(url): """Check if the passed url is valid using dperini regex.""" import re - ip_middle_oct = u"(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5]))" - ip_last_oct = u"(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))" + ip_middle_oct = r"(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5]))" + ip_last_oct = r"(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))" regex = re.compile( - u"^" + r"^" # protocol identifier - u"(?:(?:https?|ftp)://)" + r"(?:(?:https?|ftp)://)" # user:pass authentication - u"(?:\S+(?::\S*)?@)?" - u"(?:" - u"(?P" + r"(?:\S+(?::\S*)?@)?" + r"(?:" + r"(?P" # IP address exclusion # private & local networks - u"(?:(?:10|127)" + ip_middle_oct + u"{2}" + ip_last_oct + u")|" - u"(?:(?:169\.254|192\.168)" + ip_middle_oct + ip_last_oct + u")|" - u"(?:172\.(?:1[6-9]|2\d|3[0-1])" + ip_middle_oct + ip_last_oct + u"))" - u"|" + r"(?:(?:10|127)" + ip_middle_oct + u"{2}" + ip_last_oct + u")|" + r"(?:(?:169\.254|192\.168)" + ip_middle_oct + ip_last_oct + u")|" + r"(?:172\.(?:1[6-9]|2\d|3[0-1])" + ip_middle_oct + ip_last_oct + u"))" + r"|" # IP address dotted notation octets # excludes loopback network 0.0.0.0 # excludes reserved space >= 224.0.0.0 # excludes network & broadcast addresses # (first & last IP address of each class) - u"(?P" - u"(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])" - u"" + ip_middle_oct + u"{2}" - u"" + ip_last_oct + u")" - u"|" + r"(?P" + r"(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])" + r"" + ip_middle_oct + u"{2}" + r"" + ip_last_oct + u")" + r"|" # host name - u"(?:(?:[a-z\u00a1-\uffff0-9]-?)*[a-z\u00a1-\uffff0-9]+)" + r"(?:(?:[a-z\u00a1-\uffff0-9]-?)*[a-z\u00a1-\uffff0-9]+)" # domain name - u"(?:\.(?:[a-z\u00a1-\uffff0-9]-?)*[a-z\u00a1-\uffff0-9]+)*" + r"(?:\.(?:[a-z\u00a1-\uffff0-9]-?)*[a-z\u00a1-\uffff0-9]+)*" # TLD identifier - u"(?:\.(?:[a-z\u00a1-\uffff]{2,}))" - u")" + r"(?:\.(?:[a-z\u00a1-\uffff]{2,}))" + r")" # port number - u"(?::\d{2,5})?" + r"(?::\d{2,5})?" # resource path - u"(?:/\S*)?" + r"(?:/\S*)?" # query string - u"(?:\?\S*)?" - u"$", + r"(?:\?\S*)?" + r"$", re.UNICODE | re.IGNORECASE )