尝试匹配/测试完全合格的 sub.domain.com:1000 或 127.0.0.1:1000

Trying to Match / Test for fully qualified sub.domain.com:1000 or 127.0.0.1:1000

本文关键字:1000 sub com domain 测试      更新时间:2023-09-26

我正在尝试匹配至少所需的sub.domain.com或任何符合条件的内容,例如破折号,数字等。但为了示例,可能会匹配/测试真实的东西。

www2.sub.doh-mein.com

www.sub1-2.doh-mein3.com

sub.domain.com

www2.sub.doh-mein.com:32000

www.sub1-2.doh-mein3.com:32000

sub.domain.com:32000

123.456.789.321

123.456.789.321:32000

我的第一次尝试让我得到了一些工作得很好的东西,但不完全是这种模式是/曾经/^([a-z0-9-.]+)(:'d{1,5})?$/i我后来发现自己

^((([a-z0-9|-]+'.)*)([a-z0-9|-]+'.)([a-z]+))(:'d{1,5})?$

这最终成为前者的过度美化版本。也就是说,有什么方法可以让我要求特定的最小排序,而其他一切都是可选的。最小值为 sub.domain.com 或 IP 地址格式的字符串。从那里我没有在同一个字符串上运行多个正则表达式模式,希望不会用一堆 if-else 逻辑过多地污染我的代码

/('w+('.'w+)+|'d{1,3}('.'d{1,3}){3})(:'d+)?/
  • 'w+('.'w+)+ 匹配 www2.sub.doh-mein.comsub.domain.com
  • 'd{1,3}('.'d{1,3}){3}比赛123.456.789.321
  • (:'d+)?匹配可选端口,例如 :32000

通过将?:放在括号的开头以指示您不想反向引用它们,可以提高性能:

/(?:'w+(?:'.'w+)+|'d{1,3}(?:'.'d{1,3}){3})(?::'d+)?/