Regex 使用单个字符集捕获相邻字符的正则表达式
我试图构造一个与符合以下条件的字符串匹配的正则表达式语句:Regex 使用单个字符集捕获相邻字符的正则表达式,regex,Regex,我试图构造一个与符合以下条件的字符串匹配的正则表达式语句: 3-63个小写字母数字字符,加上“.”和“-” 不能以开始或结束。或- 虚线和句点不能彼此相邻 abc-123.xyz仅供参考,此正则表达式用于在CloudFormation模板中指定AWS S3存储桶名称时验证输入。如何: ^(?=.{3,63}$)[a-z0-9]+(?:[-.][a-z0-9]+)*$ 我们匹配一个小写字母数字字符,后跟2到62个重复: 小写字母数字字符,或 a或-(后面必须跟一个小写字母数字字符) 最后一个
^(?=.{3,63}$)[a-z0-9]+(?:[-.][a-z0-9]+)*$
我们匹配一个小写字母数字字符,后跟2到62个重复:
- 小写字母数字字符,或
- a
或
(后面必须跟一个小写字母数字字符)-
/-
字符,或者字符串末尾不能有一个
/-
。使用此模式^(?。*.-](?=[.-])[^.-][a-z0-9.-][1,61}[^.-]$
和-
是否计入3,63
字符限制?试试^(?=[a-z0-9.-]{3,63}$)[a-z0-9]+(?:[-.][a-z0-9]+)*$
这个怎么样<代码>^(?[a-zA-Z0-9]|-(?![。])|-(?![-]){3,63}$。请参阅。@WiktorStribiżew:谢谢您提供的信息。
^(?=.{3,63}$)[a-z0-9]+(?:[-.][a-z0-9]+)*$
^[a-z0-9](?:[a-z0-9]|[.\-](?=[a-z0-9])){2,62}$
# ^(?!.*[.-](?=[.-]))[^.-][a-z0-9.-]{1,61}[^.-]$
^ # Start of string/line
(?! # Negative Look-Ahead
. # Any character except line break
* # (zero or more)(greedy)
[.-] # Character in [.-] Character Class
(?= # Look-Ahead
[.-] # Character in [.-] Character Class
) # End of Look-Ahead
) # End of Negative Look-Ahead
[^.-] # Character not in [.-] Character Class
[a-z0-9.-] # Character in [a-z0-9.-] Character Class
{1,61} # (repeated {1,61} times)
[^.-] # Character not in [.-] Character Class
$ # End of string/line