String Validation
- string_utils.validation.contains_html(input_string: str) bool
Checks if the given string contains HTML/XML tags.
By design, this function matches ANY type of tag, so don’t expect to use it as an HTML validator, its goal is to detect “malicious” or undesired tags in the text.
Examples:
>>> contains_html('my string is <strong>bold</strong>') # returns true >>> contains_html('my string is not bold') # returns false
- Parameters:
input_string (str) – Text to check
- Returns:
True if string contains html, false otherwise.
- string_utils.validation.is_camel_case(input_string: Any) bool
Checks if a string is formatted as camel case.
A string is considered camel case when:
it’s composed only by letters ([a-zA-Z]) and optionally numbers ([0-9])
it contains both lowercase and uppercase letters
it does not start with a number
Examples:
>>> is_camel_case('MyString') # returns true >>> is_camel_case('mystring') # returns false
- Parameters:
input_string (str) – String to test.
- Returns:
True for a camel case string, false otherwise.
- string_utils.validation.is_credit_card(input_string: Any, card_type: str = None) bool
Checks if a string is a valid credit card number. If card type is provided then it checks against that specific type only, otherwise any known credit card number will be accepted.
Supported card types are the following:
VISA
MASTERCARD
AMERICAN_EXPRESS
DINERS_CLUB
DISCOVER
JCB
- Parameters:
input_string (str) – String to check.
card_type (str) – Card type. Default to None (any card).
- Returns:
True if credit card, false otherwise.
- string_utils.validation.is_decimal(input_string: str) bool
Checks whether the given string represents a decimal or not.
A decimal may be signed or unsigned or use a “scientific notation”.
>>> is_decimal('42.0') # returns true >>> is_decimal('42') # returns false
- Parameters:
input_string (str) – String to check
- Returns:
True if integer, false otherwise
- string_utils.validation.is_email(input_string: Any) bool
Check if a string is a valid email.
Reference: https://tools.ietf.org/html/rfc3696#section-3
Examples:
>>> is_email('my.email@the-provider.com') # returns true >>> is_email('@gmail.com') # returns false
- Parameters:
input_string (str) – String to check.
- Returns:
True if email, false otherwise.
- string_utils.validation.is_full_string(input_string: Any) bool
Check if a string is not empty (it must contains at least one non space character).
Examples:
>>> is_full_string(None) # returns false >>> is_full_string('') # returns false >>> is_full_string(' ') # returns false >>> is_full_string('hello') # returns true
- Parameters:
input_string (str) – String to check.
- Returns:
True if not empty, false otherwise.
- string_utils.validation.is_integer(input_string: str) bool
Checks whether the given string represents an integer or not.
An integer may be signed or unsigned or use a “scientific notation”.
Examples:
>>> is_integer('42') # returns true >>> is_integer('42.0') # returns false
- Parameters:
input_string (str) – String to check
- Returns:
True if integer, false otherwise
- string_utils.validation.is_ip(input_string: Any) bool
Checks if a string is a valid ip (either v4 or v6).
Examples:
>>> is_ip('255.200.100.75') # returns true >>> is_ip('2001:db8:85a3:0000:0000:8a2e:370:7334') # returns true >>> is_ip('1.2.3') # returns false
- Parameters:
input_string (str) – String to check.
- Returns:
True if an ip, false otherwise.
- string_utils.validation.is_ip_v4(input_string: Any) bool
Checks if a string is a valid ip v4.
Examples:
>>> is_ip_v4('255.200.100.75') # returns true >>> is_ip_v4('nope') # returns false (not an ip) >>> is_ip_v4('255.200.100.999') # returns false (999 is out of range)
- Parameters:
input_string (str) – String to check.
- Returns:
True if an ip v4, false otherwise.
- string_utils.validation.is_ip_v6(input_string: Any) bool
Checks if a string is a valid ip v6.
Examples:
>>> is_ip_v6('2001:db8:85a3:0000:0000:8a2e:370:7334') # returns true >>> is_ip_v6('2001:db8:85a3:0000:0000:8a2e:370:?') # returns false (invalid "?")
- Parameters:
input_string (str) – String to check.
- Returns:
True if a v6 ip, false otherwise.
- string_utils.validation.is_isbn(input_string: str, normalize: bool = True) bool
Checks if the given string represents a valid ISBN (International Standard Book Number). By default hyphens in the string are ignored, so digits can be separated in different ways, by calling this function with normalize=False only digit-only strings will pass the validation.
Examples:
>>> is_isbn('9780312498580') # returns true >>> is_isbn('1506715214') # returns true
- Parameters:
input_string – String to check.
normalize – True to ignore hyphens (“-”) in the string (default), false otherwise.
- Returns:
True if valid ISBN (10 or 13), false otherwise.
- string_utils.validation.is_isbn_10(input_string: str, normalize: bool = True) bool
Checks if the given string represents a valid ISBN 10 (International Standard Book Number). By default hyphens in the string are ignored, so digits can be separated in different ways, by calling this function with normalize=False only digit-only strings will pass the validation.
Examples:
>>> is_isbn_10('1506715214') # returns true >>> is_isbn_10('150-6715214') # returns true >>> is_isbn_10('150-6715214', normalize=False) # returns false
- Parameters:
input_string – String to check.
normalize – True to ignore hyphens (“-”) in the string (default), false otherwise.
- Returns:
True if valid ISBN 10, false otherwise.
- string_utils.validation.is_isbn_13(input_string: str, normalize: bool = True) bool
Checks if the given string represents a valid ISBN 13 (International Standard Book Number). By default hyphens in the string are ignored, so digits can be separated in different ways, by calling this function with normalize=False only digit-only strings will pass the validation.
Examples:
>>> is_isbn_13('9780312498580') # returns true >>> is_isbn_13('978-0312498580') # returns true >>> is_isbn_13('978-0312498580', normalize=False) # returns false
- Parameters:
input_string – String to check.
normalize – True to ignore hyphens (“-”) in the string (default), false otherwise.
- Returns:
True if valid ISBN 13, false otherwise.
- string_utils.validation.is_isogram(input_string: Any) bool
Checks if the string is an isogram (https://en.wikipedia.org/wiki/Isogram).
Examples:
>>> is_isogram('dermatoglyphics') # returns true >>> is_isogram('hello') # returns false
- Parameters:
input_string (str) – String to check.
- Returns:
True if isogram, false otherwise.
- string_utils.validation.is_json(input_string: Any) bool
Check if a string is a valid json.
Examples:
>>> is_json('{"name": "Peter"}') # returns true >>> is_json('[1, 2, 3]') # returns true >>> is_json('{nope}') # returns false
- Parameters:
input_string (str) – String to check.
- Returns:
True if json, false otherwise
- string_utils.validation.is_number(input_string: str) bool
Checks if a string is a valid number.
The number can be a signed (eg: +1, -2, -3.3) or unsigned (eg: 1, 2, 3.3) integer or double or use the “scientific notation” (eg: 1e5).
Examples:
>>> is_number('42') # returns true >>> is_number('19.99') # returns true >>> is_number('-9.12') # returns true >>> is_number('1e3') # returns true >>> is_number('1 2 3') # returns false
- Parameters:
input_string (str) – String to check
- Returns:
True if the string represents a number, false otherwise
- string_utils.validation.is_palindrome(input_string: Any, ignore_spaces: bool = False, ignore_case: bool = False) bool
Checks if the string is a palindrome (https://en.wikipedia.org/wiki/Palindrome).
Examples:
>>> is_palindrome('LOL') # returns true >>> is_palindrome('Lol') # returns false >>> is_palindrome('Lol', ignore_case=True) # returns true >>> is_palindrome('ROTFL') # returns false
- Parameters:
input_string (str) – String to check.
ignore_spaces (bool) – False if white spaces matter (default), true otherwise.
ignore_case (bool) – False if char case matters (default), true otherwise.
- Returns:
True if the string is a palindrome (like “otto”, or “i topi non avevano nipoti” if strict=False), False otherwise
- string_utils.validation.is_pangram(input_string: Any) bool
Checks if the string is a pangram (https://en.wikipedia.org/wiki/Pangram).
Examples:
>>> is_pangram('The quick brown fox jumps over the lazy dog') # returns true >>> is_pangram('hello world') # returns false
- Parameters:
input_string (str) – String to check.
- Returns:
True if the string is a pangram, False otherwise.
- string_utils.validation.is_slug(input_string: Any, separator: str = '-') bool
Checks if a given string is a slug (as created by slugify()).
Examples:
>>> is_slug('my-blog-post-title') # returns true >>> is_slug('My blog post title') # returns false
- Parameters:
input_string (str) – String to check.
separator (str) – Join sign used by the slug.
- Returns:
True if slug, false otherwise.
- string_utils.validation.is_snake_case(input_string: Any, separator: str = '_') bool
Checks if a string is formatted as “snake case”.
A string is considered snake case when:
it’s composed only by lowercase/uppercase letters and digits
it contains at least one underscore (or provided separator)
it does not start with a number
Examples:
>>> is_snake_case('foo_bar_baz') # returns true >>> is_snake_case('foo') # returns false
- Parameters:
input_string (str) – String to test.
separator (str) – String to use as separator.
- Returns:
True for a snake case string, false otherwise.
- string_utils.validation.is_string(obj: Any) bool
Checks if an object is a string.
Example:
>>> is_string('foo') # returns true >>> is_string(b'foo') # returns false
- Parameters:
obj – Object to test.
- Returns:
True if string, false otherwise.
- string_utils.validation.is_url(input_string: Any, allowed_schemes: Optional[List[str]] = None) bool
Check if a string is a valid url.
Examples:
>>> is_url('http://www.mysite.com') # returns true >>> is_url('https://mysite.com') # returns true >>> is_url('.mysite.com') # returns false
- Parameters:
input_string (str) – String to check.
allowed_schemes (Optional[List[str]]) – List of valid schemes (‘http’, ‘https’, ‘ftp’…). Default to None (any scheme is valid).
- Returns:
True if url, false otherwise
- string_utils.validation.is_uuid(input_string: Any, allow_hex: bool = False) bool
Check if a string is a valid UUID.
Example:
>>> is_uuid('6f8aa2f9-686c-4ac3-8766-5712354a04cf') # returns true >>> is_uuid('6f8aa2f9686c4ac387665712354a04cf') # returns false >>> is_uuid('6f8aa2f9686c4ac387665712354a04cf', allow_hex=True) # returns true
- Parameters:
input_string (str) – String to check.
allow_hex (bool) – True to allow UUID hex representation as valid, false otherwise (default)
- Returns:
True if UUID, false otherwise
- string_utils.validation.words_count(input_string: str) int
Returns the number of words contained into the given string.
This method is smart, it does consider only sequence of one or more letter and/or numbers as “words”, so a string like this: “! @ # % … []” will return zero! Moreover it is aware of punctuation, so the count for a string like “one,two,three.stop” will be 4 not 1 (even if there are no spaces in the string).
Examples:
>>> words_count('hello world') # returns 2 >>> words_count('one,two,three.stop') # returns 4
- Parameters:
input_string (str) – String to check.
- Returns:
Number of words.