В Python, как проверить, содержит ли строка только определенные символы?
Мне нужно проверить строку, содержащую только a..z, 0..9 и. (период) и никакой другой символ.
Я мог выполнять итерацию по каждому символу и проверять, что символ - это a..z или 0..9, или. но это будет медленным.
Теперь я не понимаю, как это сделать с регулярным выражением.
Это правильно? Можете ли вы предложить более простое регулярное выражение или более эффективный подход.
#Valid chars . a-z 0-9
def check(test_str):
import re
#http://docs.python.org/library/re.html
#re.search returns None if no position in the string matches the pattern
#pattern to search for any character other then . a-z 0-9
pattern = r'[^\.a-z0-9]'
if re.search(pattern, test_str):
#Character other then . a-z 0-9 was found
print 'Invalid : %r' % (test_str,)
else:
#No character other then . a-z 0-9 was found
print 'Valid : %r' % (test_str,)
check(test_str='abcde.1')
check(test_str='abcde.1#')
check(test_str='ABCDE.12')
check(test_str='_-/>"[email protected]#12345abcde<')
'''
Output:
>>>
Valid : "abcde.1"
Invalid : "abcde.1#"
Invalid : "ABCDE.12"
Invalid : "_-/>"[email protected]#12345abcde<"
'''