有人可以告诉我以下正则表达式如何解决?我正在尝试将应用程序上传到Appspot,并收到一条错误消息,表明我的名字不符合以下条件:
^(?:[a-z\d\-]{1,100}\~)?(?:(?!\-)[a-z\d\-\.]{1,100}:)?(?!-)[a-z\d\-]{1,100}$
答案 0 :(得分:3)
相当复杂,但我会尝试将规则简化为英语。
名称中只允许使用一个代字号(〜),但它是可选的。如果有波浪号,则它不能是名称中的第一个字符,它必须在其前面至少有1个,最多100个字母,数字或短划线。
名称中只允许使用一个冒号(:),它是可选的。如果有冒号,它必须:
一个。如果存在,可以在波浪号之后来。
湾来自一个或多个字母,数字,破折号或句号。
℃。字母,数字,短划线和句号组不能以破折号开头。
名称的其余部分可以包含任意字母,数字或短划线,最多可包含一百个字符。可选的波浪号和冒号部分必须位于它之前,并且它不能以破折号开头。您必须至少使用一个字符,最多100个字符。
允许的一些例子:
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.