我想匹配所有满足以下规则的字符串-
- 应该由小写字母和数字和破折号组成
- 应该以字母或数字开头
- 应以字母或数字结尾
- 总字符串长度应至少为 3 且最多 20 个字符
- dot
.
是可选的,不应该有两个或多个连续的点.
- 破折号
-
是可选的,不应有两个或多个连续破折号-
- 点
.
和破折号-
不应该是连续的 // 字符串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
谁能帮我纠正这个正则表达式?