[英]Removing dot from subdomain using regular Expression
这是匹配 url 的正则表达式。
我想要的是在子域之后删除点 (.)。
所以如果我输入http://www.abc.xyz.def.com
我希望子域是abc.xyz
但我得到abc.xyz.
我只想用这个正则表达式来做到这一点。
^((https?):\/\/)?(www\.)?(([A-z0-9]+\.)*)([A-z0-9]+\.[A-z]{2,4})(\/(.)*)?(\/?\?{0}|\/?\?{1}.*)$
如果可以在子域名中要求至少 2 个字符,您可以按以下步骤进行:测试匹配组之后的点而不是它的末尾,并允许匹配组内的点,只要它们不是它的第一个或最后一个字符:
^((https?):\/\/)?(www\.)?([A-z0-9][A-z0-9\.]+[A-z0-9])\.([A-z0-9]+\.[A-z]{2,4})(\/(.)*)?(\/?\?{0}|\/?\?{1}.*)$
要还允许 1 个字符的子域,请添加 ? 到比赛组的第二部分:
^((https?):\/\/)?(www\.)?([A-z0-9]([A-z0-9\.]+[A-z0-9])?)\.([A-z0-9]+\.[A-z]{2,4})(\/(.)*)?(\/?\?{0}|\/?\?{1}.*)$
编辑:
域之前的点现在在任何组之外,因此子域和域都没有包含它。
移动.
来自www.
之后的捕获组www.
到下一组。 您仍然可以匹配.
通过将它放在[]
,在该组中,但它不会在子域的末尾匹配,因为它在下一个组中匹配(除非您有一个无效的域,例如www.foo.bar..baz.com
)。
^((https?):\/\/)?(www\.)?([A-z0-9.]+)*(\.[A-z0-9]+\.[A-z]{2,4})(\/(.)*)?(\/?\?{0}|\/?\?{1}.*)$\
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.