我正在使用以下条件的正则表达式:
我能够获得正则表达式:
^[a-zA-Z0-9](?!.*--)[a-zA-Z0-9-]{0,61}[A-Za-z0-9]$
但是它在长度约束上失败了,并允许像" a - "这样的模式。我怎样才能满足条件?
答案 0 :(得分:2)
我会将您的要求描述为:
^(?=.{1,63}$)(?!.*--)[a-zA-Z]([a-zA-Z0-9\-]*[a-zA-Z0-9])?$
以下是对上述正则表达式各部分的简要说明:
^ from the start of the match
(?=.{1,63}$) assert that the string is between 1 63 characters
(?!.*--) assert that two hyphens do not appear together anywhere
[a-zA-Z] first character is a letter (mandatory in all matches)
([a-zA-Z0-9\-]*[a-zA-Z0-9])?
最后一部分表示匹配最后一个字母,该字符是字母数字,但不是短划线,可能前面有字母数字字符或短划线。
答案 1 :(得分:2)
我对此的看法是:
^[A-Za-z](?!.*?--)[A-Za-z0-9\-]{0,62}(?<!-)$
<强>解释强>
^
- 匹配字符串的开头。[A-Za-z]
- 匹配第一个字母。(?!.*?--)
- 确保字符串的其余部分没有连续两个连字符。[A-Za-z0-9\-]{0,62}
- 匹配剩余的字母数字和连字符。(?<!-)
- 确保字符串不以连字符结尾。$
- 匹配字符串的结尾。