在 Python 中,如何检查字符串是否只包含某些字符?
我需要检查一个只包含.z、0..9和. (句点)且不包含其他字符的字符串。
我可以迭代每个字符并检查字符是否是。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='_-/>"!@#12345abcde<')
'''
Output:
>>>
Valid : "abcde.1"
Invalid : "abcde.1#"
Invalid : "ABCDE.12"
Invalid : "_-/>"!@#12345abcde<"
'''