0

我正在尝试使用正则表达式做一些事情,我想知道如何执行以下操作:接受:

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/*

子域通配符只能包含 [az][AZ][0-9] 并且是可选的,但如果它存在,则必须在其后添加一个点。

我来了:

https?://(www.)google.com/

但我认为这不是正确的工作方式......而且只有www。是可用的。我希望有人能给我所需的结果,并解释为什么它会这样工作。

谢谢,

丹尼斯

4

3 回答 3

6

我想这可能是你所追求的:

https?://([a-zA-Z0-9]+\.)?google\.com(/.*)?

该站点将帮助您验证您的正则表达式。这似乎与您想要的匹配,但您可能希望对最后一部分更具体,因为几乎可以.*匹配任何内容。

于 2013-01-16T13:52:11.620 回答
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

我希望这有助于解释上面的答案,很难将这一切都作为评论。

于 2013-01-16T14:01:52.583 回答
0

作为 POSIX ERE:

https?://(\*|([a-zA-Z0-9]+)\.)?google.com

(\*|([a-zA-Z0-9]+)\.)部分表示您有一个*或一个字母数字字符串,然后是一个点。这是可选的,所以后面跟一个问号。

您还可以[a-zA-Z0-9]用 POSIX 字符类替换范围:[[:alnum:]],给出:

https?://(\*|([[:alnum:]]+)\.)?google.com
于 2013-01-16T13:57:41.613 回答