Regex не является хорошим решением здесь.
Проверить, является ли строка UTF8 целым числом:
try:
int(val)
is_int = True
except ValueError:
is_int = False
Подтвердить, если строка UTF8 является плавающей точкой: то же, что и выше, но с float()
.
Подтвердить, если длина строки UTF8 (1-255):
is_of_appropriate_length = 1 <= len(val) <= 255
Подтвердить, если строка UTF8 является допустимой датой: это не тривиально. Если вы знаете правильный формат, вы можете использовать time.strptime()
следующим образом:
# Validate that the date is in the YYYY-MM-DD format.
import time
try:
time.strptime(val, '%Y-%m-%d')
is_in_valid_format= True
except ValueError:
is_in_valid_format = False
РЕДАКТИРОВАТЬ: Еще одна вещь, чтобы отметить. Поскольку вы специально упоминаете строки UTF-8, имеет смысл сначала декодировать их в Unicode. Это будет сделано:
my_unicode_string = my_utf8_string.decode('utf8')
Интересно отметить, что при попытке преобразовать строку Unicode в целое число, например, используя int()
, вы не ограничены цифрами «западно-арабский», используемыми в большинстве стран мира. int(u'١٧')
и int(u'१७')
будут правильно декодироваться как 17, даже если они являются индуистско-арабскими и девангарскими цифрами соответственно.