我正在努力满足下一个限制:
line有3到256个字符,分别是az,0-9,dash或dot.
这条线无法开始或结束 -
我想获得下一个输出:
aaa -> good aaaa -> good -aaa -> bad aaa- -> bad ---a -> bad
有一些正则数据没有给出正确答案:1)^[^-][a-z0-9\-.]{3,256}[^-]$
所有测试线都是坏的;
2)^[^-]+[a-z0-9\-.]{3,256}[^-]+$
将前三行视为一个匹配的字符串,因为[^ - ]匹配新行我猜.
3)^[^-]?[a-z0-9\-.]{3,256}[^-]?$
(?用于一个或零匹配的破折号)使所有测试线都很好
真相在哪里?我感觉它要么接近我的要么更复杂.
PS我使用python 3 re模块.
这个几乎是正确的: ^[^-][a-z0-9\-.]{3,256}[^-]$
在[^-]
开始和结束已经代表一个字符,所以你需要改变{3,256}
成{1,254}
此外,你可能只想要az,0-9和.在开始和结束(不只是任何东西,除了- ),所以完整的regex变为:
^[a-z0-9.][a-z0-9\-.]{1,254}[a-z0-9.]$