我正在尝试一些正则表达式的东西,我想知道如何做以下事情: 接受:
http://google.com
https://google.com
http://google.com/
https://google.com/
http://google.com/*
https://google.com/*
http://*.google.com
https://*.google.com
http://*.google.com/
https://*.google.com/
http://*.google.com/*
https://*.google.com/*
子域通配符可能只包含[a-z] [A-Z] [0-9]并且是可选的,但如果它在需要后存在一个点。
我来到了:
https?://(www.)google.com/
但我认为这不是正确的工作方式......而且只有www。是可用的。 我希望有人能给我所需的结果,并解释为什么它会这样运作。
谢谢,
丹尼斯
答案 0 :(得分:6)
我认为这可能是你所追求的:
https?://([a-zA-Z0-9]+\.)?google\.com(/.*)?
this site将帮助您验证正则表达式。这似乎符合您的要求,但您可能希望对最后一部分更具体,因为.*
几乎可以匹配。
答案 1 :(得分:3)
http(s)?://([a-zA-Z0-9]+\.)?google\.com(/.*)?
[这是rmhartog的答案,看起来对我来说是正确的] 我只是想扩大原因 - 问题中提到的问题。 OP请不要接受我的回答,因为我只是扩展前一个人的答案。
http - This must be an exact match
(s)? - ? is zero or one time
:// - This must be an exact match
( - start of a group
[a-zA-Z0-9] - Defines a character class that allows any of these characters in it.
+ - one or more of these characters must be present, empty set is invalid.
\. - escapes the dot character (usually . is a wildcard in regex)
)? - end of the group and the group can appear 0 or one time
google - This must be an exact match
\. - escapes the dot character (usually . is a wildcard in regex)
com - This must be an exact match
( - start of a group
/ - This must be an exact match
.* - matches any character 0 or more times (this fits anything you can type)
)? - end of the group and the group can appear 0 or one time
我希望这有助于解释上面的答案,很难将这一切都作为评论。
答案 2 :(得分:0)
作为POSIX ERE:
https?://(\*|([a-zA-Z0-9]+)\.)?google.com
(\*|([a-zA-Z0-9]+)\.)
部分表示您有一个*
或一个字母数字字符串,然后是一个点。这是可选的,因此后跟一个问号。
您还可以使用POSIX字符类替换范围[a-zA-Z0-9]
:[[:alnum:]]
,并提供:
https?://(\*|([[:alnum:]]+)\.)?google.com