我试图构建匹配的字符串,符合以下条件的正则表达式语句:“”正则表达式醒目相邻字符为一个字符集
- 3-63小写字母数字字符,再加上和“ - ”
- 可能无法开始或结束。或 -
- 虚线和周期不能相邻。
abc-123.xyz < - 应符合
abc123-.xyz < - 不应该匹配
我已经能够把这个正则表达式在一起,但它并没有赶上第三个要求。我尝试过使用另一个负面的前瞻/后视,即[ - (?!.- | - 。)]但它仍然将字符串与相邻的句点和破折号相匹配。这是我想出了正则表达式语句满足条件1 & 2:
^(?!\.|-)([a-z0-9]|\.|-){3,63}(?<!\.|-)$
仅供参考,这个表达式是在CloudFormation模板specifiying的AWS S3存储桶名称时,验证输入。
是'.'和'-'计入'3,63'字符限制?试试'^(?= [a-z0-9 .-] {3,63} $)[a-z0-9] +(?:[ - 。] [a-z0-9] +)* $' –
这个怎么样? '^(?:[a-zA-Z0-9] | - (?![。])| \。(?![ - ])){3,63} $' – Gurman