编写用于字符串的python正则表达式。我希望字符串至少有1个符号,最多30个。问题是我在正则表达式字母中使用了3个子块,因此长度始终必须为3个字符。 在这个正则表达式(1-30字符长度)中添加该条件是否可能:
regex = re.compile("^[a-zA-Z]+[a-zA-Z0-9\.\-]+[a-zA-Z0-9]$")
r = regex.search(login)
谢谢。
编写用于字符串的python正则表达式。我希望字符串至少有1个符号,最多30个。问题是我在正则表达式字母中使用了3个子块,因此长度始终必须为3个字符。 在这个正则表达式(1-30字符长度)中添加该条件是否可能:
regex = re.compile("^[a-zA-Z]+[a-zA-Z0-9\.\-]+[a-zA-Z0-9]$")
r = regex.search(login)
谢谢。
虽然不清楚您想接受哪些1或2个字符的字符串,但我建议使用以下正则表达式:
regex = re.compile("^[a-zA-Z][a-zA-Z0-9\.\-]{0,28}[a-zA-Z0-9]$")
由于中间部分包含了所有其他内容,因此它将直接匹配您所需的长度为3-30的所有单词。
我希望这个正则表达式也能匹配您的2个字符的字符串(我假设第一个字符必须是字母),您需要添加一些内容(使用“|”)来进行单个字符的匹配。
r"^[a-zA-Z][a-zA-Z0-9\.\-]+[a-zA-Z0-9]$"
你将完全匹配相同的字符串集。第一个组以外的任何额外前导字母都将在第二个组中匹配。
现在,您的正则表达式中唯一可变的部分是中间部分。为了将总长度限制为30,您只需要将该中间部分限制为28个字符。将+更改为{1,28}即可得到:
r"^[a-zA-Z][a-zA-Z0-9\.\-]{1,28}[a-zA-Z0-9]$"
你可以在以下链接中了解更多关于Python正则表达式的信息:
a-
会有效吗?-
会有效吗?0
呢?你需要更仔细地思考你的问题。 - Martijn Pieters