帮助Appspot正则表达式

时间:2011-02-21 12:04:37

标签: regex

有人可以告诉我以下正则表达式如何解决?我正在尝试将应用程序上传到Appspot,并收到一条错误消息,表明我的名字不符合以下条件:

^(?:[a-z\d\-]{1,100}\~)?(?:(?!\-)[a-z\d\-\.]{1,100}:)?(?!-)[a-z\d\-]{1,100}$

3 个答案:

答案 0 :(得分:3)

相当复杂,但我会尝试将规则简化为英语。

  1. 名称中只允许使用一个代字号(〜),但它是可选的。如果有波浪号,则它不能是名称中的第一个字符,它必须在其前面至少有1个,最多100个字母,数字或短划线。

  2. 名称中只允许使用一个冒号(:),它是可选的。如果有冒号,它必须:

    一个。如果存在,可以在波浪号之后来。

    湾来自一个或多个字母,数字,破折号或句号。

    ℃。字母,数字,短划线和句号组不能以破折号开头。

  3. 名称的其余部分可以包含任意字母,数字或短划线,最多可包含一百个字符。可选的波浪号和冒号部分必须位于它之前,并且它不能以破折号开头。您必须至少使用一个字符,最多100个字符。

  4. 允许的一些例子:

    • FOO〜bar.baz:垃圾邮件蛋

    • 东西:其它 -

    • 何人〜思想这-是-A-好主意

    • together.we.stand:强

    • 简应该工作

    • -starting划线〜as.long.as.there.is.a:波浪线后它

    一些不允许的例子:

    • -no起动划线

    • -no起动划线:与-A-结肠 - 丁无波浪

    • no.full.stops.without.a.colon.after.it

    • 〜无波浪线在最开始

    • :无结肠在最开始

    • 更〜比〜之一:波浪:或:结肠

答案 1 :(得分:1)

^ (anchor to start of string)

  Any character in "a-z\d-"
  At least 1, but not more than 100 times
  ~

? (zero or one time)

  zero-width negative lookahead
    -

  Any character in "a-z\d-."
  At least 1, but not more than 100 times
  :

? (zero or one time)
zero-width negative lookahead
  -

Any character in "a-z\d-"
At least 1, but not more than 100 times
$ (anchor to end of string)

答案 2 :(得分:1)

^                  # start of string
(?:                # Try to match the following:
 [a-z\d\-]{1,100}  # - 1-100 of the characters a-z, 0-9 or -
 \~                # - followed by a ~
)?                 # zero or one times.
(?:                # Then try to match:
 (?!\-)            # - unless the first character is a -
 [a-z\d\-\.]{1,100}# - 1-100 of the characters a-z, 0-9, . or -
 :                 # - followed by a :
)?                 # zero or one times.
(?!-)              # Then (unless the next character is a -) match:
[a-z\d\-]{1,100}   # 1-100 of the characters a-z, 0-9 or -
$                  # until the end of the string.