Решение на Регулярни изрази от Стефан Колчев

Обратно към всички решения

Към профила на Стефан Колчев

Резултати

  • 3 точки от тестове
  • 0 бонус точки
  • 3 точки общо
  • 13 успешни тест(а)
  • 26 неуспешни тест(а)

Код

import re
class PrivacyFilter:
def __init__(self, text):
self.text = text
self.preserve_phone_country_code = False
self.preserve_email_hostname = False
self.partially_preserve_email_username = False
def filtered():
pass
class Validations:
@staticmethod
def is_email(value):
result = re.match(
r'[a-zA-Z0-9][a-zA-Z0-9_.+-]{0,199}@([a-zA-Z0-9]'
r'[a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+'
r'[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
return bool(result)
@staticmethod
def is_phone(value):
result = re.match(
r'(0[1-9]|(00|\+)[1-9]\d{0,2})[\(\)\(-)]'
r'{0,2}(\d[\(\)\(-)]{0,2}){6,10}\d', value)
return bool(result)
@staticmethod
def is_hostname(value):
result = re.match(
r'([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)'
r'+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
return bool(result)
@staticmethod
def is_ip_address(value):
result = re.match(r'(([0-9]){1,3}.){3}[0-9]{1,3}', value)
return bool(result)
@staticmethod
def is_number(value):
result = re.match(r'^\-?(0|[1-9]\d*)(\.\d+)?', value)
return bool(result)
@staticmethod
def is_integer(value):
result = re.match(r'^-?(?!0\d)\d*', value)
return bool(result)
@staticmethod
def is_date(value):
result = re.match(
r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1])', value)
return bool(result)
@staticmethod
def is_time(value):
result = re.match(
r'([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
return bool(result)
@staticmethod
def is_datetime(value):
result = re.match(
r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1]'
r'[T-]([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
return bool(result)

Лог от изпълнението

EEEEEEEEEEEE....F....FFFFFFF.F.EFFFF...
======================================================================
ERROR: test_allows_email_hostname_to_be_preserved (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 54, in test_allows_email_hostname_to_be_preserved
    self.assertEqual('[FILTERED]@example.com', self.filter_email_usernames('someone@example.com'))
  File "/tmp/d20140513-11348-17klob5/test.py", line 11, in filter_email_usernames
    return filter.filtered()
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_allows_email_usernames_to_be_partially_preserved (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 58, in test_allows_email_usernames_to_be_partially_preserved
    self.assertEqual('som[FILTERED]@example.com', self.partially_filter_email_usernames('someone@example.com'))
  File "/tmp/d20140513-11348-17klob5/test.py", line 16, in partially_filter_email_usernames
    return filter.filtered()
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_does_not_brake_with_unicode (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 64, in test_does_not_brake_with_unicode
    self.assertEqual('За връзка: [FILTERED]@example.com', self.partially_filter_email_usernames('За връзка: me@example.com'))
  File "/tmp/d20140513-11348-17klob5/test.py", line 16, in partially_filter_email_usernames
    return filter.filtered()
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_does_not_filter_invalid_emails (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 48, in test_does_not_filter_invalid_emails
    self.assertEqual(text, solution.PrivacyFilter(text).filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_does_not_filter_invalid_phone_numbers (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 86, in test_does_not_filter_invalid_phone_numbers
    self.assertEqual(filtered, solution.PrivacyFilter(text).filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_filters_more_complex_phone_numbers (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 76, in test_filters_more_complex_phone_numbers
    self.assertEqual(filtered, solution.PrivacyFilter(text).filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_filters_whole_email_usernames_if_too_short (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 61, in test_filters_whole_email_usernames_if_too_short
    self.assertEqual('[FILTERED]@example.com', self.partially_filter_email_usernames('me@example.com'))
  File "/tmp/d20140513-11348-17klob5/test.py", line 16, in partially_filter_email_usernames
    return filter.filtered()
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_obfuscates_more_complicated_emails (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 37, in test_obfuscates_more_complicated_emails
    self.assertEqual(filtered, solution.PrivacyFilter(text).filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_obfuscates_simple_emails (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 24, in test_obfuscates_simple_emails
    self.assertEqual('Contact: [EMAIL]', solution.PrivacyFilter('Contact: someone@example.com').filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_preserves_whitespace_around_phones (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 89, in test_preserves_whitespace_around_phones
    self.assertEqual(' [PHONE] or...', solution.PrivacyFilter(' +359881212-12-1 2 or...').filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_separates_preserved_country_code_from_filtered_phone_with_a_space (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 100, in test_separates_preserved_country_code_from_filtered_phone_with_a_space
    self.assertEqual(filtered, filter.filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_works_with_blank_or_whitespace_strings_and_preserves_whitespace (test.PrivacyFilterTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 19, in test_works_with_blank_or_whitespace_strings_and_preserves_whitespace
    self.assertEqual('', solution.PrivacyFilter('').filtered())
TypeError: filtered() takes 0 positional arguments but 1 was given

======================================================================
ERROR: test_validates_datetime_values (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 277, in test_validates_datetime_values
    self.assertTrue(solution.Validations.is_datetime('2012-11-19 19:00:00'))
  File "/tmp/d20140513-11348-17klob5/solution.py", line 69, in is_datetime
    r'[T-]([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
  File "/opt/python3.3/lib/python3.3/re.py", line 156, in match
    return _compile(pattern, flags).match(string)
  File "/opt/python3.3/lib/python3.3/functools.py", line 258, in wrapper
    result = user_function(*args, **kwds)
  File "/opt/python3.3/lib/python3.3/re.py", line 274, in _compile
    return sre_compile.compile(pattern, flags)
  File "/opt/python3.3/lib/python3.3/sre_compile.py", line 493, in compile
    p = sre_parse.parse(p, flags)
  File "/opt/python3.3/lib/python3.3/sre_parse.py", line 724, in parse
    p = _parse_sub(source, pattern, 0)
  File "/opt/python3.3/lib/python3.3/sre_parse.py", line 347, in _parse_sub
    itemsappend(_parse(source, state))
  File "/opt/python3.3/lib/python3.3/sre_parse.py", line 674, in _parse
    raise error("unbalanced parenthesis")
sre_constants.error: unbalanced parenthesis

======================================================================
FAIL: test_can_validate_more_complex_phone_numbers (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 160, in test_can_validate_more_complex_phone_numbers
    self.assertIs(solution.Validations.is_phone(phone), valid)
AssertionError: False is not True

======================================================================
FAIL: test_does_not_break_on_phones_in_multiline_strings (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 163, in test_does_not_break_on_phones_in_multiline_strings
    self.assertFalse(solution.Validations.is_phone("0885123123\nwat?"))
AssertionError: True is not false

======================================================================
FAIL: test_handles_multiline_strings_in_IP_validation_properly (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 189, in test_handles_multiline_strings_in_IP_validation_properly
    self.assertFalse(solution.Validations.is_ip_address("8.8.8.8\n"))
AssertionError: True is not false

======================================================================
FAIL: test_handles_multiline_strings_in_hostname_validation_properly (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 179, in test_handles_multiline_strings_in_hostname_validation_properly
    self.assertFalse(solution.Validations.is_hostname("foo.com\n"))
AssertionError: True is not false

======================================================================
FAIL: test_handles_multiline_strings_in_integer_validation_properly (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 233, in test_handles_multiline_strings_in_integer_validation_properly
    self.assertFalse(solution.Validations.is_number("42\n24"))
AssertionError: True is not false

======================================================================
FAIL: test_handles_multiline_strings_in_numbers_validation_properly (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 215, in test_handles_multiline_strings_in_numbers_validation_properly
    self.assertFalse(solution.Validations.is_number("42\n24"))
AssertionError: True is not false

======================================================================
FAIL: test_handles_newlines_in_date_validation (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 259, in test_handles_newlines_in_date_validation
    self.assertFalse(solution.Validations.is_date("2012-11-19\n"))
AssertionError: True is not false

======================================================================
FAIL: test_handles_newlines_in_time_and_datetime_validation (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 288, in test_handles_newlines_in_time_and_datetime_validation
    self.assertFalse(solution.Validations.is_time("12:01:01\n"))
AssertionError: True is not false

======================================================================
FAIL: test_validates_IP_addresses (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 184, in test_validates_IP_addresses
    self.assertFalse(solution.Validations.is_ip_address('300.2.3.4'))
AssertionError: True is not false

======================================================================
FAIL: test_validates_hostnames (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 169, in test_validates_hostnames
    self.assertTrue(solution.Validations.is_hostname('1.2.3.4.xip.io'))
AssertionError: False is not true

======================================================================
FAIL: test_validates_integers (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 220, in test_validates_integers
    self.assertFalse(solution.Validations.is_integer('universe'))
AssertionError: True is not false

======================================================================
FAIL: test_validates_more_complex_integers (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 223, in test_validates_more_complex_integers
    self.assertFalse(solution.Validations.is_integer(' 42 '))
AssertionError: True is not false

======================================================================
FAIL: test_validates_more_complex_numbers (test.ValidationsTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20140513-11348-17klob5/test.py", line 205, in test_validates_more_complex_numbers
    self.assertFalse(solution.Validations.is_number('00'))
AssertionError: True is not false

----------------------------------------------------------------------
Ran 39 tests in 0.039s

FAILED (failures=13, errors=13)

История (3 версии и 0 коментара)

Стефан обнови решението на 23.04.2014 15:14 (преди над 10 години)

+import re
+
+
+class PrivacyFiler:
+
+ def __init__(self, text):
+ self.text = text
+ self.preserve_phone_country_code = False
+ self.preserve_email_hostname = False
+ self.partially_preserve_email_username = False
+
+ def filtered():
+ pass
+
+
+class Validations:
+
+ @staticmethod
+ def is_email(value):
+ result = re.match(
+ r'[a-zA-Z0-9][a-zA-Z0-9_.+-]{0,199}@([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
+ return bool(result)
+
+ @staticmethod
+ def is_phone(value):
+ result = re.match(
+ r'(0[1-9]|(00|\+)[1-9]\d{0,2})[ \(\)\-]{0,2}(\d[ \(\)\-]{0,2}){6,10}\d', value)
+ return bool(result)
+
+ @staticmethod
+ def is_hostname(value):
+ result = re.match(
+ r'([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
+ return bool(result)
+
+ @staticmethod
+ def is_ip_address(value):
+ result = re.match(r'(([0-9]){1,3}.){3}[0-9]{1,3}', value)
+ return bool(result)
+
+ @staticmethod
+ def is_number(value):
+ result = re.match(r'^\-?(0|[1-9]\d*)(\.\d+)?', value)
+ return bool(result)
+
+ @staticmethod
+ def is_integer(value):
+ result = re.match(r'^-?(?!0\d)\d*', value)
+ return bool(result)
+
+ @staticmethod
+ def is_date(value):
+ result = re.match(
+ r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1])', value)
+ return bool(result)
+
+ @staticmethod
+ def is_time(value):
+ result = re.match(
+ r'([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
+ return bool(result)
+
+ @staticmethod
+ def is_datetime(value):
+ result = re.match(
+ r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1])[ T-]([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
+ return bool(result)

Стефан обнови решението на 23.04.2014 16:15 (преди над 10 години)

import re
-class PrivacyFiler:
-
+class PrivacyFilter:
def __init__(self, text):
self.text = text
self.preserve_phone_country_code = False
self.preserve_email_hostname = False
self.partially_preserve_email_username = False
def filtered():
pass
class Validations:
-
@staticmethod
def is_email(value):
result = re.match(
r'[a-zA-Z0-9][a-zA-Z0-9_.+-]{0,199}@([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
return bool(result)
@staticmethod
def is_phone(value):
result = re.match(
- r'(0[1-9]|(00|\+)[1-9]\d{0,2})[ \(\)\-]{0,2}(\d[ \(\)\-]{0,2}){6,10}\d', value)
+ r'(0[1-9]|(00|\+)[1-9]\d{0,2})[\(\)\(-)]{0,2}(\d[\(\)\(-)]{0,2}){6,10}\d', value)
return bool(result)
@staticmethod
def is_hostname(value):
result = re.match(
r'([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
return bool(result)
@staticmethod
def is_ip_address(value):
result = re.match(r'(([0-9]){1,3}.){3}[0-9]{1,3}', value)
return bool(result)
@staticmethod
def is_number(value):
result = re.match(r'^\-?(0|[1-9]\d*)(\.\d+)?', value)
return bool(result)
@staticmethod
def is_integer(value):
result = re.match(r'^-?(?!0\d)\d*', value)
return bool(result)
@staticmethod
def is_date(value):
result = re.match(
r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1])', value)
return bool(result)
@staticmethod
def is_time(value):
result = re.match(
r'([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
return bool(result)
@staticmethod
def is_datetime(value):
result = re.match(
- r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1])[ T-]([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
+ r'\d{4}-(0[1-9] | 1[1-2])-(0[1-9] | [12]\d | 3[0-1])[T-]([01]\d | 2[0-3]): ([0-4]\d | 5[1-9]): ([0-4]\d | 5[1-9])', value)
return bool(result)

Стефан обнови решението на 23.04.2014 16:23 (преди над 10 години)

import re
class PrivacyFilter:
def __init__(self, text):
self.text = text
self.preserve_phone_country_code = False
self.preserve_email_hostname = False
self.partially_preserve_email_username = False
def filtered():
pass
class Validations:
@staticmethod
def is_email(value):
result = re.match(
- r'[a-zA-Z0-9][a-zA-Z0-9_.+-]{0,199}@([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
+ r'[a-zA-Z0-9][a-zA-Z0-9_.+-]{0,199}@([a-zA-Z0-9]'
+ r'[a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+'
+ r'[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
return bool(result)
@staticmethod
def is_phone(value):
result = re.match(
- r'(0[1-9]|(00|\+)[1-9]\d{0,2})[\(\)\(-)]{0,2}(\d[\(\)\(-)]{0,2}){6,10}\d', value)
+ r'(0[1-9]|(00|\+)[1-9]\d{0,2})[\(\)\(-)]'
+ r'{0,2}(\d[\(\)\(-)]{0,2}){6,10}\d', value)
return bool(result)
@staticmethod
def is_hostname(value):
result = re.match(
- r'([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
+ r'([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)'
+ r'+[a-zA-Z]{2,3}(\.[a-zA-Z]{2}){0,1}$', value)
return bool(result)
@staticmethod
def is_ip_address(value):
result = re.match(r'(([0-9]){1,3}.){3}[0-9]{1,3}', value)
return bool(result)
@staticmethod
def is_number(value):
result = re.match(r'^\-?(0|[1-9]\d*)(\.\d+)?', value)
return bool(result)
@staticmethod
def is_integer(value):
result = re.match(r'^-?(?!0\d)\d*', value)
return bool(result)
@staticmethod
def is_date(value):
result = re.match(
r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1])', value)
return bool(result)
@staticmethod
def is_time(value):
result = re.match(
r'([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
return bool(result)
@staticmethod
def is_datetime(value):
result = re.match(
- r'\d{4}-(0[1-9] | 1[1-2])-(0[1-9] | [12]\d | 3[0-1])[T-]([01]\d | 2[0-3]): ([0-4]\d | 5[1-9]): ([0-4]\d | 5[1-9])', value)
+ r'\d{4}-(0[1-9]|1[1-2])-(0[1-9]|[12]\d|3[0-1]'
+ r'[T-]([01]\d|2[0-3]):([0-4]\d|5[1-9]):([0-4]\d|5[1-9])', value)
return bool(result)