我试图匹配至少必需的 sub.domain.com
或任何符合条件的内容,例如破折号、数字等。但出于示例目的,可能会匹配/测试 true。
www2.sub.doh-mein.com
www.sub1-2.doh-mein3.com
子域名.com
www2.sub.doh-mein.com:32000
www.sub1-2.doh-mein3.com:32000
子域名.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.com
、sub.domain.com
-
\d{1,3}(\.\d{1,3}){3}
与123.456.789.321
匹配 -
(:\d+)?
匹配可选端口,例如ojit_代码
通过将 :32000
放在括号开头以表明您不想向后引用它们,可以提高性能:
/(?:\w+(?:\.\w+)+|\d{1,3}(?:\.\d{1,3}){3})(?::\d+)?/
关于javascript - 尝试匹配/测试完全合格的 sub.domain.com :1000 or 127. 0.0.1:1000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34930479/