Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用单个字符集捕获相邻字符的正则表达式_Regex - Fatal编程技术网

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个小写字母数字字符,加上“.”和“-”
  • 不能以开始或结束。或-
  • 虚线和句点不能彼此相邻
  • abc-123.xyz仅供参考,此正则表达式用于在CloudFormation模板中指定AWS S3存储桶名称时验证输入。

    如何:

    ^(?=.{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