我正在尝试匹配至少所需的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逻辑
答案 0 :(得分:0)
/(\w+(\.\w+)+|\d{1,3}(\.\d{1,3}){3})(:\d+)?/
\w+(\.\w+)+
匹配www2.sub.doh-mein.com
,sub.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+)?/