我想确保字符串中的任何字符都包含字母数字字符以及_
或,
,但字符串必须以字母字符结尾。任何地方都不能有空白。
我正在尝试这个:
'^[Sa-zA-Z0-9,_][SA-Za-z]+$'
我希望它能处理字母数字、特殊字符和空白,[Sa-zA-Z0-9,_]
这个:
[SA-Za-z]
说在最后使用字母字符,但似乎失败了,比如:
import re
s = 'lk78d1'
regex = '^[Sa-zA-Z0-9,_][SA-Za-z]+$'
if(re.search(regex,s)):
print("valid")
else:
raise ValueError('non valid')
错误在于您使用的S
基本上匹配任何非空白字符,即它覆盖了剩余的模式,因为它包括字母数字字符和所有符号。
另外一个改进是使用w
而不是[A-Za-z0-9_]
。并使用忽略大小写标志使其可读性更强。就是一个可测试的例子
新的python代码是
import re
s = 'lk78d1'
regex = r'^[w,]+[a-z]$'
if(re.search(regex, s, re.IGNORECASE)):
print("valid")
else:
raise ValueError('non valid')