我希望匹配所有符合以下规则的字符串 -
然而,在某些情况下,它会失败,例如 -
- 应该由小写字母、数字和破折号组成
- 应以字母或数字开头
- 应以字母或数字结尾
- 总字符串长度应至少为3个字符,最多为20个字符
- 点
.
是可选的,不应有两个或更多连续的点.
- 破折号
-
是可选的,不应有两个或更多连续的破折号-
- 点
.
和破折号-
不应该连续 //字符串aaa.-aaabbb
无效 - 不允许下划线
我想到了这个正则表达式:
^[a-z0-9]([a-z0-9]+\.?\-?[a-z0-9]+){1,18}[a-z0-9]$
[a-z0-9] //should start/end with a letter or a number
([a-z0-9]+\.?\-?[a-z0-9]+){1,18} //other rules
然而,在某些情况下,它会失败,例如 -
abcdefghijklmnopqrstuvwxyz //should fail total number of chars greater than 20
aaa.-aaabbb //should fail as dot '.' and dash '-' are consecutive
请问有人可以帮我纠正这个正则表达式吗?