繁体   English   中英

使用正则表达式从子域中删除点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM